gpt4 book ai didi

c - 为什么父子pid都显示

转载 作者:行者123 更新时间:2023-11-30 18:40:18 24 4
gpt4 key购买 nike

我创建了这个程序,该程序循环 5 次,使用 fork() 创建子进程,并将 PID 放入 int 数组中,并在循环时打印每个数组元素,但为什么它显示父进程和子进程 PID。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

void main() {
int i, nPIDStore[12];
for (i = 0; i <5; i++) {
fork();
nPIDStore[i] = getpid();
printf("%d\n", nPIDStore[i]);
getchar();
}
exit(0);
}

感谢您的回复。

最佳答案

因为在执行 getpid() 并打印它时,您没有区分父级和子级..

您知道 fork()0 返回给子进程,并将子进程的 pid 返回给父进程,所以

flag = fork();
if(flag == 0)
{
//this will be executed in the child process
nPIDStore[i] = getpid();
printf("%d\n", nPIDStore[i]);
}

但是,当您循环执行此操作时。最后一次迭代的子代也将成为下一次迭代的父代..这将导致创建 (2^5)-1 已处理的子代..所以请记住这一点..

关于c - 为什么父子pid都显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530013/

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