[英]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
為子進程返回0
,錯誤時返回-1
,父進程返回其他值。 else
開始了父進程的部分,這意味着waitpid
中的pid
包含子進程的 PID。
引用man wait
:
waitpid()
系統調用會暫停調用進程的執行,直到pid
參數指定的子進程更改狀態。 默認情況下,waitpid()
僅等待終止的子進程,但此行為可通過options
參數 [...]
簡而言之, waitpid
等待子進程終止。
如果 fork 成功,fork 將 0 返回給子進程,並將新 fork 的子進程的(正)pid 返回給父進程。 在這個語句中,父進程等待子進程的終止。
成功分叉將返回子 ID 給父級,返回 0 給子級,
waitpid(pid, &status, 0)
;
0 - 選項表示父節點將等待子節點終止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.