2014-03-03 22 views
0

我在C以下代碼:如何在execlp()之後找到程序的返回值?

execlp("ReturnValue.c");

ReturnValue.c應該返回一個整數0-3之間,而且由於程序成功運行時execlp不會返回任何東西,我怎麼能得到該程序的返回值?

+0

Havind一個*二進制可執行文件*名爲'ReturnValue.c'(以'.c'擴展名)是口感不佳。 '.c'擴展名應該是C源文件! –

回答

2

你可以做這樣的事情:

pid = fork(); 

if (pid == 0) { 
    execlp("ReturnValue.c", ...); 
} 
else if (pid > 0) { 
    waitpid(pid, &status, ...); 

    /* extract the return status */ 
    WEXITSTATUS(status); 
} 
else { /* fork() error */ } 

waitpid(3)man 3 waitpid

+0

噢,謝謝,所以「WEXITSTATUS(status)」會是返回值嗎?然後我可以比較「if(WEXITSTATUS(status))== 0)」? – Pig

+0

也許閱讀'waitpid'手冊頁。它告訴你所有你需要知道的...... – pat

+0

@ user3300198是的,我已經添加了一個鏈接到'waitpid(3)'手冊,你可以按照該鏈接閱讀該手冊。 –

相關問題