2010-12-01 10 views
3

Gibt es ein Analogon von PHP-System in C?Wie erfassen Prozessausgabe in C?

man system sagt, dass system Status des Befehls zurückgeben, aber ich brauche die Ausgabe (wie in PHP).

Natürlich kann ich dafür Rohre verwenden, aber gibt es einen Standardweg?

+0

Ich denke, Sie wollen popen ('Befehl geht hier'). Lies deine Manpage auf popen –

Antwort

3

Sie können von popen und damit verbundene Funktion als machen:

// command to be run. 
char *cmd = "date"; 

// open pipe stream. 
FILE *fp = popen(cmd,"r"); 
int ch; 

// error checking. 
if(!fp) { 
     fprintf(stderr,"Error popen with %s\n",cmd); 
     exit(1); 
} 

// read from the process and print. 
while((ch = fgetc(fp)) != EOF) { 
     putchar(ch); 
} 

// close the stream. 
pclose(fp); 

Ideone link

2

Wenn Sie die Ausgabe des Befehls benötigen, würden Sie popen() unter Unix (mit „r“, um anzuzeigen, dass Sie von dem Befehl lesen möchten).

FILE *fp = popen("some -convoluted command", "r"); 
...check for validity... 
...read data from command... 
pclose(fp);