LinuxにおけるWIFEXITEDとWEXITSTATUSの意味は?

Linuxでは、WIFEXITED と WEXITSTATUS は子プロセスの終了ステータスを扱うマクロです。

  1. 子プロセスが正常終了したかどうかを確認するWIFEXITEDマクロ。正常終了した場合は非0値を返し、それ以外は0を返す。
  2. 子プロセスが正常終了(WIFEXITEDが0以外)の場合、WEXITSTATUSマクロで終了ステータス値を取得します。

以下は、WIFEXITED および WEXITSTATUS マクロを使用して子プロセスの終了ステータスを処理する方法を示すサンプルコードです。

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
    pid_t pid;
    int status;

    // 创建子进程
    pid = fork();

    if (pid == 0) {
        // 子进程执行的代码
        printf("子进程正在执行...\n");
        // 子进程正常退出,退出状态值为42
        exit(42);
    } else if (pid > 0) {
        // 父进程执行的代码
        wait(&status);

        if (WIFEXITED(status)) {
            printf("子进程正常退出,退出状态值为 %d\n", WEXITSTATUS(status));
        }
    } else {
        // fork失败
        printf("创建子进程失败\n");
        return 1;
    }

    return 0;
}

上記コードを実行すると、以下が出力されます。

子进程正在执行...
子进程正常退出,退出状态值为 42

プロセスが正常終了したかどうかはWIFEXITEDマクロで調べ、プロセス終了ステータス値はWEXITSTATUSマクロで取得します。

bannerAds