在GThread中,我有这样的代码
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);
因此
2>&1
应该将stderr重定向到stdout,管道g_打印应该打印出gcc的stderr输出。但它什么也做不了。我可能做错什么了?
最佳答案
您的代码有错误,请更改
char *commandLine [1024];
sprintf(commandLine, "gcc myfile.c -o myfile.exe 2>&1");
到
char commandLine [1024];
sprintf(commandLine, "gcc myfile.c -o myfile.exe 2>&1");
对于sprintf,第一个参数是
char* str
。您可以阅读how to control popen stdin, stdout, stderr redirection?