gpt4 book ai didi

c - fork() 之后创建的子进程的父 pid_t

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:32 24 4
gpt4 key购买 nike

我有以下功能:

void test_fork()
{
pid_t id;

printf("Parent process id: %d\n", getpid());

id = fork();

if (id == 0)
printf("\nChild:");
else if (id > 0)
printf("\nParent:");
else
exit(EXIT_FAILURE);

printf("\nprocess id: %d\n", getpid());
printf("parent process id: %d\n", getppid());
}

我的疑问与它的输出有关,特别是有时我有以下直接的输出:

Parent process id: 879

Parent:
process id: 879
parent process id: 878

Child:
process id: 881
parent process id: 879

其中最后一个 ID 等于其父 ID(正如预期的那样)。

但有时输出例如:

Parent process id: 858

Parent:
process id: 858
parent process id: 857

Child:
process id: 860
parent process id: 1

其中最后一个id不等于它的父进程id,而是等于1(应该是init进程的id)。

这怎么可能?

最佳答案

因为当子进程请求其父进程的pid时父进程已经结束,所以子进程的父进程默认为init进程。 init 进程的 pid1

尝试在父进程中放置一个wait()!!

关于c - fork() 之后创建的子进程的父 pid_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com