GNU/Linux >> Linux Esercitazione >  >> Linux

C:comando Linux eseguito dalla funzione popen() che non mostra risultati

Poiché l'output andrà a stderr devi reindirizzare stderr così:

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

questo reindirizzerà stderr a stdout e quindi vedrai l'output di entrambi. Seconda edizione fscanf si fermerà al primo spazio in modo da poterlo sostituire con fgets :

fgets(buffer, 100, file);

Come correttamente diagnosticato da Shafik Yaghmour, l'output che vedi da ntpdate è scritto (correttamente) nel suo errore standard, che è lo stesso dell'errore standard del tuo programma.

Per ottenere i messaggi di errore inviati lungo la pipe, usa:

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

Questo invia l'output dell'errore standard da ntpdate allo standard output del comando, che è la pipe da cui stai leggendo.

Ovviamente, sembra che si usi ntpdate non funzionerà bene finché non avrai configurato qualcosa.


Linux
  1. Come salvare l'output dei comandi in un file in Linux

  2. ntpdate:comando non trovato

  3. tee Esempi di comandi in Linux

  4. Esecuzione di un comando linux da python

  5. Output del comando Linux come parametro di un altro comando

8 Comando Tee Linux con esempi

comando iftop in Linux

Comando lsblk in Linux

Risoluzione dei problemi di errore "Bash:comando non trovato" in Linux

Esempi di comandi echo Linux

Comando SCP Linux per trasferire file in modo sicuro