簡體   English   中英

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為子進程返回0 ,錯誤時返回-1 ,父進程返回其他值。 else開始了父進程的部分,這意味着waitpid中的pid包含子進程的 PID。

引用man wait

waitpid()系統調用會暫停調用進程的執行,直到pid參數指定的子進程更改狀態。 默認情況下, waitpid()僅等待終止的子進程,但此行為可通過options參數 [...]

簡而言之, waitpid等待子進程終止。

如果 fork 成功,fork 將 0 返回給子進程,並將新 fork 的子進程的(正)pid 返回給父進程。 在這個語句中,父進程等待子進程的終止。

成功分叉將返回子 ID 給父級,返回 0 給子級,

waitpid(pid, &status, 0) ;

  1. 參數.. ) pid - 特定的子 ID。
  2. 參數.. ) &status - 退出狀態將由孩子發送給父母
  3. 參數..) 選項

0 - 選項表示父節點將等待子節點終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM