[英]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.