Pregunta

¿Cómo puedo capturar la salida de otro proceso usando C puro? ¿Puedes proporcionar un código de muestra?

EDITAR: supongamos que Linux. Me interesaría '' bastante portátil '' código. Todo lo que quiero hacer es ejecutar un comando, capturar su salida y procesarlo de alguna manera.

¿Fue útil?

Solución

Hay varias opciones, pero depende un poco de su plataforma. Dicho esto, popen debería funcionar en la mayoría de los lugares, por ejemplo,

#include <stdio.h>

FILE *stream;
stream = popen("acommand", "r");

/* use fread, fgets, etc. on stream */

pclose(stream);

Tenga en cuenta que esto tiene un uso muy específico, crea el proceso ejecutando el comando acommand y adjunta su estándar de tal manera que sea accesible desde su programa a través de la secuencia < code> FILE * .

Si necesita conectarse a un proceso existente, o necesita realizar operaciones más complejas, es posible que necesite buscar otras instalaciones. Unix tiene varios mecanismos para conectar un stdout de procesos, etc.

En Windows puede usar la API CreateProcess para crear un nuevo proceso y conectar su controlador de salida estándar a lo que desee. Windows también admite popen .

Sin embargo, no conozco una forma simple de hacer esto en C, por lo que siempre depende un poco de los APis específicos de la plataforma.

Según sus ediciones popen parece ideal, es "bastante portátil", no creo que haya un sistema operativo como Unix sin él, de hecho es parte de la especificación Single Unix, y POSIX , y le permite hacer exactamente lo que quiere, ejecutar un proceso, tome su salida y procese.

Otros consejos

Si puede usar tuberías del sistema, simplemente canalice la salida del otro proceso a su programa C y, en su programa C, simplemente lea la entrada estándar.

otherprocess | your_c_program

¿Qué sistema operativo está utilizando? En el sistema operativo tipo * nix, si el proceso se está enviando a STDOUT o STDERR, obviamente puede usar tuberías

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top