gpt4 book ai didi

c - for() 循环中的 fork()

转载 作者:太空狗 更新时间:2023-10-29 17:16:57 26 4
gpt4 key购买 nike

我正在尝试做一个家庭作业,我必须使用 fork() 但我不知道为什么在我的 for 循环中运行我的 fork 后我不能停止它们:

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

int main(int argc, char *argv[]){
int limit = argc/2;
if(argc%2 == 0){

perror("the number of arguments given must pe even!");
exit(1);
}

int i;
for(i=0; i<=limit; i++){
if(fork()==-1){
perror("childes couldn't be created\n");
exit(1);
}
if(fork()==0){
printf("fork: %d \n",i);
exit(1);
}
wait(0);
}


printf("exiting...\n");
return 0;
}

输出:

warzaru@ubuntu:~/OS/UprocH$ ./exe a b c d
fork: 0
fork: 0
fork: 1
fork: 1
fork: 1
fork: 2
fork: 2
fork: 1
fork: 2
exiting...
exiting...
fork: 2
exiting...
exiting...
fork: 2
exiting...
exiting...
exiting...
warzaru@ubuntu:~/OS/UprocH$ fork: 2
fork: 2
fork: 2
exiting...

最佳答案

Daniel Fischer 强制我提供答案。

改变:

if(fork()==-1){} // first fork
if(fork()==0){} // second fork

收件人:

pid = fork();
if(pid == -1)
{
... //failed
}
else if(pid == 0)
{
... //success
}

或者使用switch语句:

switch(fork())
{
case -1:
... // failed
break;
case 0:
... // success
break;
}

关于c - for() 循环中的 fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439426/

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