2011-01-21 12 views
14

Estoy intentando ejecutar un comando Linux en el programa c usando la llamada al sistema del sistema, pero no quiero que descargue los registros de salida o error en el terminal. ¿Que debería hacer? Hay alguna otra manera de hacer esto?Ejecutar un comando Linux en el programa c

Respuesta

23

Como la llamada a system() utiliza un shell para ejecutar el comando, puede redirigir stdout y stderr a/dev/null, p.

system("ls -lh >/dev/null 2>&1"); 
+5

+1, añadiendo el 'adicional);' es un ejercicio para el lector dejó :) –

3

Muestra el código.

probar, por ejemplo:

sistema ("LS");

11

popen es otra forma en la que se puede hacer lo mismo:

void get_popen() 
    FILE *pf; 
    char command[20]; 
    char data[512]; 

    // Execute a process listing 
    sprintf(command, "ps aux wwwf"); 

    // Setup our pipe for reading and execute our command. 
    pf = popen(command,"r"); 

    // Error handling 

    // Get the data from the process execution 
    fgets(data, 512 , pf); 

    // the data is now in 'data' 

    if (pclose(pf) != 0) 
     fprintf(stderr," Error: Failed to close command stream \n"); 

    return; 
} 
+0

A diferencia de otras respuestas, éste también permite obtener la salida del programa. –

Cuestiones relacionadas