̾??
wait
, waitpid
,
wait4
, wait3
—
?ץ??????ν?λ?Ե?
Standard C Library (libc, -lc)
<sys/types.h>
<sys/wait.h>
pid_t
wait
(int
*status) <sys/time.h>
<sys/resource.h>
pid_t
waitpid
(pid_t wpid,
int *status, int options)
pid_t
wait3
(int *status,
int options, struct rusage
*rusage) pid_t
wait4
(pid_t wpid,
int *status, int options,
struct rusage *rusage)
wait
()
?ؿ??ϡ???λ?????ҥץ???????
status
?????ѤǤ????褦?ˤʤ??ޤǡ??ޤ??ϥ????ʥ????????????ޤǡ?
?ƤӽФ??ץ??????μ¹Ԥ????ߤ??ޤ???
wait
()
?ƤӽФ????????????ȡ? status
?ΰ??ˤϲ????????Τ褦?˽?λ?????ץ??????ν?λ???????????ޤ???
wait4
()
?????ƥॳ?????ϡ??????λҥץ????????Ԥ?ɬ?פ????ꡢ?ҥץ??????????Ѥ???
????????????פ??뤤?ϥ??ץ???????ɬ?פȤ????ץ????????Τ????ˡ?
????????Ū?ʥ??ե??????????ޤ???
????¾???Ե??ؿ??ϡ? wait4
()
?????Ѥ??Ƽ????????Ƥ??ޤ???
wpid
???????ԤĤ٤??ҥץ??????ν????????ꤷ?ޤ???
wpid ?? -1
?Ǥ??????硢???θƤӽФ??Ϥ??٤Ƥλҥץ????????Ԥ??ޤ???
wpid ?? 0
?Ǥ??????硢???θƤӽФ??ϡ??ƤӽФ?¦?Υץ????????롼?פ?
???٤Ƥλҥץ????????Ԥ??ޤ???
wpid ?? 0
?????礭?????硢???θƤӽФ??ϥץ?????
ID ?? wpid
?Ǥ????ץ????????Ԥ??ޤ???
wpid ?? -1
???꾮???????硢?ƤӽФ??ϡ??ץ????????롼??
ID ?? wpid
???????ͤ????????ץ????????Ԥ??ޤ???
status
?????ϡ??ʲ??Τ褦???????????Ƥ??ޤ???
options
?????ˤϡ??ʲ???Ǥ?դΥ??ץ??????Υӥå??????¤??????ޤ???
WCONTINUED
???ץ??????ϡ????????ȥץ??????λҥץ??????ǡ????????????????߾??֤???
SIGCONT
?????ʥ??????????ä??????????ץ??????Υ??ơ???????
???𤹤??٤??Ǥ??뤳?Ȥ??ޤ???
WNOHANG
???ץ??????ϡ????ơ??????????𤹤??ץ????????ʤ??????˸ƤӽФ???
?֥??å????ʤ????Ȥ??????˻??Ѥ??ޤ???
WUNTRACED
???ץ??????????ꤹ???ȡ?
SIGTTIN
, SIGTTOU
,
SIGTSTP
, SIGSTOP
?????ʥ??Τ????????ߤ??????????ȥץ??????λҤˤ⡢
???Υ??ơ??????????𤵤??ޤ???
rusage ?? 0
?ʳ??Ǥ????????ϡ???λ?????ץ???????
???Τ??٤ƤλҤ????Ѥ?????????Υ??ޥ꤬?֤????ޤ?
(???ߤΤȤ????????ξ????????ߤ????ץ??????ˤĤ??Ƥϻ??ѤǤ??ޤ???)??
WNOHANG
???ץ??????ꤵ?졢???ơ??????????𤹤??ץ????????ʤ????硢
wait4
()
?ϥץ????? ID 0 ???ᤷ?ޤ???
waitpid
()
?ؿ??ϡ? rusage ???ͤ? 0
?ˤ??? wait4
() ??Ʊ???Ǥ???
?Ť? wait3
()
?ƤӽФ??ϡ? wpid ???ͤ?
-1 ?ˤ??? wait4
() ??Ʊ???Ǥ???
?ʲ??Υޥ????ϡ??ץ??????ν?λ?λ??????Τ??Τ˻??ѤǤ??ޤ???
?ǽ??? 3 ?ĤΥޥ????ϡ?0 ?ʳ? (??)
???ͤ?ɾ?????ޤ?:
WIFCONTINUED
(status)
- ?ץ?????????λ???Ƥ??餺?????????????????߾??֤Τ?????????????????
???Ȥʤ??ޤ??? ???Υޥ????? wait
?ƤӽФ???
WCONTINUED
???ץ??????ꤵ?줿?????Τ߿??Ȥʤ??ޤ???
WIFEXITED
(status)
- _exit(2)
??
exit(3)
???ƤӽФ????ץ????????????˽?λ?????????˿??Ȥʤ??ޤ???
WIFSIGNALED
(status)
- ?????ʥ????????????????˥ץ?????????λ?????????˿??Ȥʤ??ޤ???
WIFSTOPPED
(status)
- ?ץ?????????λ???Ƥ??ʤ????????ߤ??Ƥ??ƺƳ??Ǥ????????˿??Ȥʤ??ޤ???
???Υޥ????? wait ?ƤӽФ???
WUNTRACED
???ץ??????????ꤹ?뤫???ҥץ????????ȥ졼???????Ƥ???
(ptrace(2)
??)
?????Τߤ˿??Ȥʤ??ޤ???
?嵭?ޥ??????ͤ˽??äơ??ʲ??Υޥ????ϡ?
?ҥץ??????λĤ??Υ??ơ??????????????????ޤ?:
WEXITSTATUS
(status)
WIFEXITED
(status)
?????Ǥ????????ˡ??Ҥ?
_exit(2)
??
exit(3)
???Ϥ????????β??? 8
?ӥåȤ?ɾ?????ޤ???
WTERMSIG
(status)
WIFSIGNALED
(status)
?????Ǥ????????ˡ??ץ??????ν?λ?θ????Ȥʤä??????ʥ????ֹ???ɾ?????ޤ???
WCOREDUMP
(status)
WIFSIGNALED
(status)
?????Ǥ????????ˡ??ץ?????????λ???????ǡ??????ʥ????????????Ȥ???
?ץ??????Υ???????ޤॳ???ե????뤬???????줿?????˿??Ȥʤ??ޤ???
WSTOPSIG
(status)
WIFSTOPPED
(status)
?????Ǥ????????ˡ??ץ??????????ߤθ????Ȥʤä??????ʥ????ֹ???ɾ?????ޤ???
??λ?????ʥ??Υꥹ?ȤˤĤ??Ƥϡ?
sigaction(2)
?Ȥ??Ƥ????????? ???ơ??????? 0
?Ǥ????Ȥ??????Ȥϡ??????˽?λ?????Ȥ??????ȤǤ???
???٤Ƥλҥץ??????ν?λ???Ԥ????˿ƥץ?????????λ?????ȡ?
?Ĥ??λҥץ??????ˤϿƥץ?????
ID ?? 1 (init ?Υץ????? ID) ??
???????Ƥ????ޤ???
Ǥ?դ?
wait
()
?ƤӽФ?????α?ˤʤäƤ????֤˥????ʥ????????????ȡ?
?????ʥ??????롼?????????ä??Ȥ??ˡ?
?ƤӽФ??ϳ??????ޤ??뤫?Ƴ??????ޤ???
?????ϥ????ʥ??˱ƶ????륪?ץ??????˰?¸???ޤ???
intro(2)
?????ƥॳ?????κƳ? (System call restart)
?ι??ܤȤ??Ƥ?????????
?ҥץ??????????ߤ???????λ??????????
wait
()
?????ä??????ϡ??ҤΥץ????? ID
???ƤӽФ?¦?ץ????????ᤵ???ޤ???
????¾?ξ????? -1 ???ᤵ?졢
errno
?????顼???褦?????ꤵ???ޤ???
?ҥץ??????????ߤ???????λ??????????
wait4
(),
wait3
(),
waitpid
()
?????ä??????ϡ??ҤΥץ????? ID
???ƤӽФ?¦?ץ????????ᤵ???ޤ???
?ޤ? wait
?????Ƥ??ʤ??ҥץ???????¸?ߤ??ʤ??????ϡ?-1
???ᤵ???? errno ??
ECHILD
?????ꤵ???ޤ???
WNOHANG
?????ꤵ?졢???ߤ????Ҥޤ??Ͻ?λ?????Ҥ??ʤ???????
0 ???ᤵ???ޤ???
???顼?????Ф????뤫???????????ʥ??ˤ??ꤳ?θƤӽФ????۾ェλ?????????ϡ?
-1 ???ᤵ?졢 errno
?????顼???褦?????ꤵ???ޤ???
wait
()
?ؿ??ϰʲ??ξ????˥??顼?Ȥʤꡢ?????????????ޤ?:
- [
ECHILD
]
- ?ƤӽФ?¦?ץ??????ϡ?wait
?????Ƥ??ʤ??ҥץ????????????ޤ?????
- [
ECHILD
]
- ?????ʥ?
SIGCHLD
??̵?뤹?뤳?ȡ??ޤ??Ϥ??Υ????ʥ???
SA_NOCLDWAIT
?ե饰?????ꤹ?뤳?Ȥˤ??ꡢ?ƤӽФ?¦?Υץ??????ϴ??˥????ƥ???
???Τ褦???????ͤ??Ѵ??????褦???ᤷ?Ƥ????Τǡ?
??λ???줿?ҥץ????????????????ͤ?̵?????Ȥ???ǽ?Ǥ???
- [
EFAULT
]
- status ?????? rusage
????????ˡ?ʥ??ɥ쥹???ؤ??Ƥ??ޤ???
(?ҥץ??????ν?λ???ˤϸ??Ф????ʤ????Ȥ??????ޤ???)
- [
EINTR
]
- ?ƤӽФ????????????ʥ??ˤ??äƳ??????ޤ줿?????????ʥ???
SA_RESTART
?ե饰?????ꤵ???Ƥ??ޤ?????
wait
() ?ؿ???
waitpid
() ?ؿ??? POSIX
?ˤ??ä??????????Ƥ??ޤ???
wait4
() ?? wait3
() ?? POSIX
?λ??ͤǤϤ????ޤ?????
WCOREDUMP
() ?ޥ???????????α????
wait
()
?ƤӽФ????Ƴ????뵡ǽ?? POSIX
???ե??????γ?ĥ??ǽ?Ǥ???
wait
() ?ؿ??ϡ?
Version 6 AT&T UNIX
???о줷?ޤ?????