获取exec进程的返回值

时间:2010-02-22 23:14:51

标签: posix exec return

我希望进程运行到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);

}

1 个答案:

答案 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;
}