2011-07-06 21 views
2

我正在使用popen()来调用另一个程序,并希望得到它的返回值$?

例如:

FILE* fd = popen("/usr/local/my_check > /dev/null ; echo $?","r"); 
int read_num = fread(buffer, sizeof(char), BUFFER_SIZE, fp); 
printf("%s\n", buffer); 
pclose(fd); 

但我总是在prinf功能得到为零。

通过$获得返回值的任何其他方式?在C程序中?

谢谢!

这里是让程序的返回码的正确方法是:

int ret = pclose(fd); 
if(WIFEXITED(ret)) 
    printf("%d\n", WEXITSTATUS(ret)); 
+1

试试man POPEN获取退出代码:该函数,pclose()关联进程函数等待终止;它返回命令的退出状态,由wait4(2)返回。 – andrewdski

+0

谢谢,我意识到waitpid()的全部内容 – SILENCE

回答

9

您可以

int rc = pclose(fd) 
相关问题