2016-06-06 28 views
0

In einem GThread Ich habe Code als solcheRohrleitungen stderr zu einem Puffer

char *commandLine [1024]; 
sprintf(commandLine, "gcc myfile.c -o myfile.exe 2>&1"); 

FILE*   pipein_fp; 
extern FILE* popen(); 
static char  buffer [1024]; 

pipein_fp = popen(commandLine, "r"); 
while(fgets(buffer, 1024, pipein_fp) != NULL) g_print("\n%s", buffer); 
pclose(pipein_fp); 

so 2>&1 soll stderr nach stdout umleiten und die verrohrt g_print sollte aus dem gcc stderr Ausgabe drucken. Aber es tut nichts. Was mache ich möglicherweise falsch?

+2

Sind Sie sicher, dass das Programm Fehler hat? Wenn es keine Fehler gibt, wird nichts auf stderr gedruckt. – Barmar

Antwort

2

Ihr Code einen Fehler hat, bitte ändern

char *commandLine [1024]; 
sprintf(commandLine, "gcc myfile.c -o myfile.exe 2>&1"); 

zu

char commandLine [1024]; 
sprintf(commandLine, "gcc myfile.c -o myfile.exe 2>&1"); 

Für sprintf, der erste Parameter char* str ist.

können Sie lesen how to control popen stdin, stdout, stderr redirection?

+0

Ich habe diesen Teil nicht kopiert und beschlossen, ihn hier zu schreiben. So wurde dieser Fehler geboren, aber es ist sowieso zu spät, um ihn zu bearbeiten. Ich habe eine neue Abstimmung gemacht, obwohl ich sie nicht als Lösung vorlegen kann, weil ich zu idiotisch bin und der Code, den ich zusammenstellte, nicht schlecht war. – Malina