我希望进程运行到exec。当命令exec运行完成时,我希望调用进程调用exec的进程接收exec调用的函数返回的值作为返回值。这怎么可能?
对不起我理解这个过程有点令人困惑。 那么让我举一个例子,我在一个bash脚本中,称之为b_scr。
在b_scr中我调用一个程序foo。反过来foo调用执行bar的exec。 我希望b_scr得到foo的返回值,bar的返回值。
所以在b_scr:
# Call foo
foo
# print return value of foo.
echo $?
bar
# should be the same value as printed before.
echo $?
FOO
... int main() { ...
exec("bar",0);
}
答案 0 :(得分:3)
对不起,你的问题还不是很清楚。你想foo与bar有相同的退出代码吗?棒退出后foo必须做什么吗?
exec()
将完全取代正在运行的进程,因此如果您在未先调用exec()
的情况下调用fork()
,则foo将被替换为bar,因此退出代码将为吧回来。
如果你想要foo来调用吧,并且在退出栏后做一些事情,你需要fork()
然后wait()
:
int main() { int status; if (fork()) { wait(&status); } else { exec("bar", 0); } // do whatever else here return status; }