waitpid() 的参数
Parameters of the waitpid()
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int status;
int pid = fork();assigned to variable "pid"
if(pid == 0)
{
printf("I am the child with pid = %d\n", getpid());
}
else
{
printf("I am the parent with pid = %d\n", getpid());
waitpid(pid, &status, 0); // line 51
}
return 0;
}
在第 51 行中,请说明 "pid" 参数。这个过程会等待什么?
如果fork成功,fork returns 0到child,returns到parent新fork的(正)pid child 过程。在此语句中,parent 等待 child 的终止。
成功分叉后将 return child id 变为 parent 并且 0 变为 child,
waitpid(pid, &status, 0)
;
- 参数..) pid - 特定的 child ID.
- 参数.. ) &status - 将由 child
发送到 parent 的退出状态
- 参数..)选项
0 - 选项表示
parent 会等到 child 结束。
fork
returns 0
用于子进程,-1
出错,以及父进程的其他内容。 else
开始父进程的部分,这意味着 waitpid
中的 pid
包含子进程的 PID。
引用 man wait
:
The waitpid()
system call suspends execution of the calling
process
until a child specified by pid
argument has changed state. By default,
waitpid()
waits only for terminated children, but this behavior is mod-
ifiable via the options
argument [...]
简而言之,waitpid
等待子进程终止。
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int status;
int pid = fork();assigned to variable "pid"
if(pid == 0)
{
printf("I am the child with pid = %d\n", getpid());
}
else
{
printf("I am the parent with pid = %d\n", getpid());
waitpid(pid, &status, 0); // line 51
}
return 0;
}
在第 51 行中,请说明 "pid" 参数。这个过程会等待什么?
如果fork成功,fork returns 0到child,returns到parent新fork的(正)pid child 过程。在此语句中,parent 等待 child 的终止。
成功分叉后将 return child id 变为 parent 并且 0 变为 child,
waitpid(pid, &status, 0)
;
- 参数..) pid - 特定的 child ID.
- 参数.. ) &status - 将由 child 发送到 parent 的退出状态
- 参数..)选项
0 - 选项表示 parent 会等到 child 结束。
fork
returns 0
用于子进程,-1
出错,以及父进程的其他内容。 else
开始父进程的部分,这意味着 waitpid
中的 pid
包含子进程的 PID。
引用 man wait
:
The
waitpid()
system call suspends execution of the calling process until a child specified bypid
argument has changed state. By default,waitpid()
waits only for terminated children, but this behavior is mod- ifiable via theoptions
argument [...]
简而言之,waitpid
等待子进程终止。