コマンドで外部プログラムを実行してい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 クエリの値を返すために使用できる場合があります。