2011-01-21 22 views
14

Sto cercando di eseguire un comando di Linux in programma c utilizzando chiamata di sistema di sistema, ma il non vogliono per eseguire il dump dei registri di output o di errore sul terminale. Cosa dovrei fare? C'è un altro modo di fare questo?Eseguire un comando di Linux nel programma c

risposta

23

della chiamata di sistema() utilizza una shell per eseguire il comando, è possibile reindirizzare stdout e stderr a/dev/null, ad esempio

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

+1, Aggiunta la ulteriore ');' è un esercizio lasciato al lettore :) –

3

Mostra codice.

Prova ad esempio:

sistema ("ls");

11

popen è un altro modo in cui si può fare la stessa cosa:

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 differenza di altre risposte, questo permette anche di ottenere l'output del programma. –

Problemi correlati