waitpid的参数()

时间:2015-10-04 13:43:15

标签: c fork pid 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行,请澄清&#34; pid&#34;参数。这个过程会等待什么?

3 个答案:

答案 0 :(得分:1)

fork为子进程返回0,对错误返回-1,为父进程返回其他内容。 else开始父进程的部分,这意味着pid中的waitpid包含子进程的PID。

引用man wait

  

waitpid()系统调用暂停执行调用   处理          直到pid参数指定的子项已更改状态。默认情况下,          waitpid()只等待被终止的孩子,但这种行为是模式的          可以通过options参数[...]

来判断

简而言之,waitpid等待子进程终止。

答案 1 :(得分:0)

如果fork成功,fork会向子节点返回0,并返回父节点(新分叉的子进程的(正)pid)。在此声明中,父母等待孩子的终止。

答案 2 :(得分:0)

on success fork会将child id返回给parent,将0返回给child,

waitpid(pid, &status, 0);

  1. 参数..)pid - 特定子ID。
  2. 参数..)&amp; status - 将由子女孩发送给父母的退出状态
  3. 参数..)选项
  4. 0 - 指示选项 父母将等到孩子被终止。