GNU/Linux >> Belajar Linux >  >> Linux

C:Perintah Linux yang dijalankan oleh fungsi popen() tidak menunjukkan hasil

Karena hasilnya akan menjadi stderr Anda perlu mengarahkan ulang stderr seperti itu:

FILE* file = popen("ntpdate 2>&1", "r");

ini akan mengalihkan stderr ke stdout dan Anda akan melihat output dari keduanya. Edisi kedua fscanf akan berhenti di spasi pertama sehingga Anda dapat mengganti dengan fgets :

fgets(buffer, 100, file);

Saat Shafik Yaghmour mendiagnosis dengan benar, keluaran yang Anda lihat dari ntpdate ditulis (dengan benar) ke kesalahan standarnya, yang sama dengan kesalahan standar program Anda.

Untuk mendapatkan pesan kesalahan yang dikirim ke pipa, gunakan:

FILE *file = popen("ntpdate 2>&1", "r");

Itu mengirimkan keluaran kesalahan standar dari ntpdate ke output standar dari perintah, yang merupakan sumber pipa tempat Anda membaca.

Tentu saja, sepertinya menggunakan ntpdate tidak akan berfungsi dengan baik sampai Anda mengonfigurasi sesuatu.


Linux
  1. Cara Menetapkan Output dari Perintah Linux ke Variabel

  2. ntpdate:perintah tidak ditemukan

  3. Contoh Perintah tee di Linux

  1. Cara Menyimpan Output Perintah ke File di Linux

  2. fflush() tidak berfungsi di Linux

  3. Mengarahkan output dari blok fungsi ke file di Linux

  1. Linux – Headphone Tidak Berfungsi Linux Mint 18?

  2. Contoh Perintah Waktu Linux

  3. Menjalankan perintah linux dari python