2

我正在使用命令运行一个外部程序execvp,现在我想捕获外部程序的退出代码,并尽可能获取PID它。

反正有可能吗?(我知道我可以$?在 ubuntu 中阅读并使用ps faxu,但这些都是肮脏的方式)

4

2 回答 2

3

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)手册页中的示例。

于 2012-10-25T06:34:20.633 回答
1

也试试int a_number = std::system("/path/to/app")

这有时可用于返回 xmessage 查询的值。

于 2012-10-25T06:44:25.343 回答