C言語システムコール-wait
wait
概要
waitは子プロセスのいずれか1つが終了するまで実行を待ちます。
終了を待ち合わせた子プロセスのプロセスIDは、waitの戻り値として返されます。
待ち合わせたプロセスの終了ステータスの確認はマクロを使用します。
WIFEXITED(status)は、子プロセスがexitシステムコールで終了した場合に真となります。
WEXITSTATUS(status)は、子プロセスの終了ステータスを数値で取り出します。
wait関連システムコール
- waitpid()
- 待ち合わせ対象となる子プロセスを指定する場合に使用します。
- wait3()
- 子プロセスのリソース情報(実行のユーザ時間とシステム時間)をrusage構造体で受け取ることができます。
- wait4()
- wait3()の機能で、待ち合わせ対象の子プロセスを指定することができます。
サンプルプログラム
#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言語
- C言語システムコール
- C言語システムコール-chdir
- C言語システムコール-chroot
- C言語システムコール-fork
- C言語システムコール-execve
- C言語システムコール-wait
- C言語システムコール-getpid
- C言語システムコール-getpriority / C言語システムコール-setpriority
- C言語システムコール-getpgid / C言語システムコール-setpgid
- C言語システムコール-getuid / C言語システムコール-setuid
- C言語システムコール-getsid / C言語システムコール-setsid
- C言語システムコール-getgroups / C言語システムコール-setgroups
- C言語システムコール-getrusage
- C言語システムコール-getrlimit / C言語システムコール-setrlimit
- C言語システムコール-nanosleep
- C言語システムコール-kill
- C言語システムコール-sigaction
- C言語システムコール-sigsuspend
- C言語システムコール-signal
- C言語システムコール-getitimer
- C言語システムコール