【问题标题】:How to find the return value of a program after execlp()? [duplicate]execlp()后如何查找程序的返回值? [复制]
【发布时间】:2014-03-03 03:09:40
【问题描述】:

我在 c 中有以下代码:

execlp("ReturnValue.c");

ReturnValue.c 应该返回一个 0-3 之间的整数,并且由于程序成功运行时 execlp 不会返回任何内容,我该如何获取该程序的返回值?

【问题讨论】:

  • 拥有一个名为ReturnValue.c(带有.c 扩展名)的binary 可执行文件的品味很差。 .c 扩展名应该用于 C 源文件!

标签: c linux exec


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 哦,谢谢,所以“WEXITSTATUS(status)”会是返回值吗?然后我可以像“if (WEXITSTATUS(status)) == 0)”那样进行比较?
  • 也许可以阅读 waitpid 手册页。它告诉你所有你需要知道的......
  • @user3300198 是的,我添加了指向waitpid(3) 手册的链接,您可以点击该链接阅读该手册。
  • 谢谢,很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多