C: Esegui un comando di sistema e ottieni l’output?

Possibile duplicato:
Come posso eseguire un programma esterno da C e analizzare il suo output?

Voglio eseguire un comando in linux e ottenere il testo restituito da ciò che viene prodotto, ma non voglio che questo testo venga stampato sullo schermo. C’è un modo più elegante di creare un file temporaneo?

Vuoi la funzione ” popen “. Ecco un esempio di esecuzione del comando “ls / etc” e output in console.

#include  #include  int main( int argc, char *argv[] ) { FILE *fp; char path[1035]; /* Open the command for reading. */ fp = popen("/bin/ls /etc/", "r"); if (fp == NULL) { printf("Failed to run command\n" ); exit(1); } /* Read the output a line at a time - output it. */ while (fgets(path, sizeof(path)-1, fp) != NULL) { printf("%s", path); } /* close */ pclose(fp); return 0; } 

Hai bisogno di una sorta di comunicazione tra processi. Usa una pipe o un buffer condiviso.

Di solito, se il comando è un programma esterno, puoi utilizzare il sistema operativo per aiutarti.

 command > file_output.txt 

Quindi il tuo codice C farebbe qualcosa di simile

 exec("command > file_output.txt"); 

Quindi puoi usare il file file_output.txt.