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 に答える