我正在使用命令运行一个外部程序execvp
,现在我想捕获外部程序的退出代码,并尽可能获取PID
它。
反正有可能吗?(我知道我可以$?
在 ubuntu 中阅读并使用ps faxu
,但这些都是肮脏的方式)
我正在使用命令运行一个外部程序execvp
,现在我想捕获外部程序的退出代码,并尽可能获取PID
它。
反正有可能吗?(我知道我可以$?
在 ubuntu 中阅读并使用ps faxu
,但这些都是肮脏的方式)
exec*
程序运行成功后函数没有返回,所以无法通过execvp
. 但是,如果您使用fork
/ wait
,您可以从函数中的状态代码中获取退出代码wait*
:
int status;
if (wait(&status) != -1) { // similar for waitpid, wait4, etc.
if (WIFEXITED(status)) {
exit_code = WEXITSTATUS(status);
} else {
// handle other conditions, e.g. signals.
}
} else {
// wait failed.
}
您可以查看wait(2)手册页中的示例。
也试试int a_number = std::system("/path/to/app")
这有时可用于返回 xmessage 查询的值。