2012-08-07 17 views
10

Estoy escribiendo un programa C en Android/Linux que ejecuta un comando del sistema. El comando envía texto a stdout, y estoy tratando de capturar el resultado en una cadena o matriz de caracteres.Obtener la salida de un comando del sistema desde stdout en C

Por ejemplo:

system("ls"); 

habría listar el contenido del directorio actual a la salida estándar, y me gustaría ser capaz de capturar esos datos en una variable mediante programación en C

¿Cómo ¿hacer esto?

Gracias.

Respuesta

13

Quiere usar popen. Devuelve una secuencia, como fopen. Sin embargo, debe cerrar la secuencia con pclose. Esto se debe a que pclose se encarga de limpiar los recursos asociados con el inicio del proceso secundario.

FILE *ls = popen("ls", "r"); 
char buf[256]; 
while (fgets(buf, sizeof(buf), ls) != 0) { 
    /*...*/ 
} 
pclose(ls); 
+0

Gracias, eso funcionó. – user1118764

Cuestiones relacionadas