簡體   English   中英

前叉函數不返回0值嗎?

[英]Fork function doesn't return 0 value?

當我在main.in中調用fork()時,我的子進程ID沒有得到0值。 我的代碼:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(){


    pid_t pid = fork();
    printf("pid in child=%d and parent=%d\n",getpid(),getppid());       
    wait(NULL);

}

和輸出:

pid in child=15690 and parent=11593
pid in child=15691 and parent=15690

問題出在哪兒? 據我所知,第二行中的子進程應該有0值。

實際上,您應該在printf語句中使用pid的值。

對於分叉的進程, fork()的結果為零,但由getpid()獲得的其進程ID不為零。

$人getpid

getpid()返回調用進程的進程ID。

$人叉

返回值
成功后,將在父級中返回子進程的PID,在子級中返回0。

您打印的是像ps命令中一樣的真實PID

暫無
暫無

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

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