【发布时间】:2014-03-03 03:09:40
【问题描述】:
我在 c 中有以下代码:
execlp("ReturnValue.c");
ReturnValue.c 应该返回一个 0-3 之间的整数,并且由于程序成功运行时 execlp 不会返回任何内容,我该如何获取该程序的返回值?
【问题讨论】:
-
拥有一个名为
ReturnValue.c(带有.c扩展名)的binary 可执行文件的品味很差。.c扩展名应该用于 C 源文件!
我在 c 中有以下代码:
execlp("ReturnValue.c");
ReturnValue.c 应该返回一个 0-3 之间的整数,并且由于程序成功运行时 execlp 不会返回任何内容,我该如何获取该程序的返回值?
【问题讨论】:
ReturnValue.c(带有.c 扩展名)的binary 可执行文件的品味很差。 .c 扩展名应该用于 C 源文件!
你可以这样做:
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
【讨论】:
waitpid 手册页。它告诉你所有你需要知道的......
waitpid(3) 手册的链接,您可以点击该链接阅读该手册。