2011-07-06 22 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) 
相關問題