Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menangkap Output Perintah Sistem Masa Nyata dalam C/C menggunakan `popen`?

Bagaimana untuk Menangkap Output Perintah Sistem Masa Nyata dalam C/C menggunakan `popen`?

Linda Hamilton
Lepaskan: 2024-12-05 14:43:15
asal
571 orang telah melayarinya

How to Capture Real-time System Command Output in C/C   using `popen`?

Merakam Output Sistem dengan popen

Soalan:

Bagaimana untuk menangkap real- output masa bagi perintah sistem yang digunakan menggunakan system(), seperti system("ls"), untuk pemprosesan selanjutnya dalam C/C ?

Jawapan:

Fungsi popen menyediakan kaedah yang cekap untuk menangkap output daripada arahan sistem. Sintaksnya ialah:

#include <stdio.h>

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);
Salin selepas log masuk
  • arahan: Menentukan perintah sistem untuk dilaksanakan.
  • taip: Menunjukkan mod untuk membuka strim. Biasanya, gunakan "r" untuk membaca (stdout) atau "w" untuk menulis (stdin).

Proses:

  1. Untuk membuka strim untuk membaca output arahan, gunakan:
FILE *stream = popen(command, "r");
Salin selepas log masuk
  1. Baca strim seperti yang anda lakukan mana-mana sumber input lain:
char buffer[1024];
while (fgets(buffer, sizeof(buffer), stream) != NULL) {
    // Process each line of output
}
Salin selepas log masuk
  1. Tutup strim apabila selesai:
pclose(stream);
Salin selepas log masuk

Contoh:

#include <stdio.h>

int main() {
    FILE *stream = popen("ls", "r");
    if (stream != NULL) {
        char buffer[1024];
        while (fgets(buffer, sizeof(buffer), stream) != NULL) {
            printf("%s", buffer);
        }
        pclose(stream);
    }
    return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output Perintah Sistem Masa Nyata dalam C/C menggunakan `popen`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan