GNU/Linux >> Tutoriales Linux >  >> Linux

C:el comando de Linux ejecutado por la función popen () no muestra resultados

Dado que la salida va a stderr necesitas redirigir stderr así:

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

esto redirigirá a stderr a stdout y entonces verá la salida de ambos. Segundo número fscanf se detendrá en el primer espacio para que pueda reemplazarlo con fgets :

fgets(buffer, 100, file);

Como Shafik Yaghmour diagnosticó correctamente, el resultado que ve en ntpdate está escrito (correctamente) en su error estándar, que es el mismo que el error estándar de su programa.

Para obtener los mensajes de error enviados por la tubería, use:

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

Eso envía la salida de error estándar de ntpdate a la salida estándar del comando, que es la tubería desde la que está leyendo.

Por supuesto, parece usar ntpdate no funcionará bien hasta que haya configurado algo.


Linux
  1. Cómo asignar la salida de un comando de Linux a una variable

  2. Cómo guardar la salida del comando en un archivo en Linux

  3. ntpdate:comando no encontrado

  4. fflush() no funciona en Linux

  5. Redirigir la salida de un bloque de funciones a un archivo en Linux

8 Comando Tee de Linux con ejemplos

Comando iftop en Linux

Comando lsblk en Linux

Solución de problemas del error "Bash:Comando no encontrado" en Linux

Ejemplos de comandos echo de Linux

Comando SCP de Linux para transferir archivos de forma segura