gpt4 book ai didi

c - 让子进程等待另一个for循环

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:19 25 4
gpt4 key购买 nike

我已经用谷歌搜索我的问题 2 天了,但我已经完成了。我有关于进程管理、fork 等的非常基本的信息。有人告诉我创建一些相同父进程的子进程,并通过使用管道向它们发送种子,这样它们就可以产生一些随机数,所有这些都是它们自己的。但我坚持创建子进程。

for (i = 0; i < NUM_PLAYERS; i++) {
/* TODO: spawn the processes that simulate the players */
switch(pid = fork()){
case -1: // ERROR
exit(EXIT_FAILURE);

case 0: // CHILD PROCESS
printf("My parent id is %d \n", getppid());
exit(EXIT_SUCCESS);

default: // PARENT PROCESS
wait(NULL);
}
}

当我使用这段代码时,父级创建了 NUM_PLAYERS 个子级,但我似乎无法在另一个 for 循环中使用它们,因为它们在案例 0 的末尾终止了。当我删除exit(EXIT_SUCCESS); 行,创建了如此多的进程,它们都有不同的父进程。所以我的问题是,如何正确创建子进程并在以后使用它们?

最佳答案

如果你删除 exit(EXIT_SUCCESS) 你的 child 将继续执行它被 fork 的地方,IE 它将回到 for() 循环的右括号,并自己产生新的 child 。你想让 child 做什么?你应该让它这样做,然后执行 exit(EXIT_SUCCESS) 并且不要让它返回到 for() 循环。

另请注意,wait() 只会等待一个进程退出。

关于c - 让子进程等待另一个for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863840/

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