2014-03-03 19 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)'手册,你可以按照该链接阅读该手册。 –

相关问题