C言語システムコール-wait



wait

概要

waitは子プロセスのいずれか1つが終了するまで実行を待ちます。

終了を待ち合わせた子プロセスのプロセスIDは、waitの戻り値として返されます。


待ち合わせたプロセスの終了ステータスの確認はマクロを使用します。

WIFEXITED(status)は、子プロセスがexitシステムコールで終了した場合に真となります。

WEXITSTATUS(status)は、子プロセスの終了ステータスを数値で取り出します。


wait関連システムコール


サンプルプログラム

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>

int
main(void)
{
    pid_t pid = 0;
    int status = 0;

    pid = fork();
    if(pid < 0){
        printf("Error: fork(%d) %s\n", errno, strerror(errno));
        return(-1);
    }
    if(pid == 0){
        printf("child process\n");
        _exit(0);
    }

    pid = wait(&status);
    if(pid < 0){
        printf("Error: wait(%d) %s\n", errno, strerror(errno));
        return(-1);
    }
    /* 終了ステータスを確認する */
    if(WIFEXITED(status)){
        printf("pid=%d, status:%d\n", (int)pid, WEXITSTATUS(status));
    }
    printf("parent process\n");

    return(0);
}

関連

C言語



スポンサード リンク