我试着创造两个孩子,然后他们得到和论证,告诉多少孩子,这两个必须创造这样:
我得到2个参数,例如2和3,它们必须创建这么多。我为他做了这件事有点管用但父母在他第二个孩子死之前就死了

edvsil@os:~/4laboras$ ./testas 2 3
pid=389 ppid=387
pid=390 ppid=387
pid=386 ppid=27959
pid=391 ppid=388
edvsil@os:~/4laboras$ pid=387 ppid=1
pid=392 ppid=388
pid=388 ppid=1
pid=393 ppid=388

我的代码:
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

int main( int argc, char *argv[] ){
pid_t child1;
pid_t child2;
int i, a, b;
child1 = fork();
if (child1 != 0){
    child2=fork();
}
if (child1 == 0){
    for (i=1; i<=atoi(argv[1]); i++){
        if (a !=0){
            a=fork();
            if (a == 0){
            printf("pid=%d ppid=%d\n", getpid(),getppid());
            exit(1);
            }
        }
    }
}
else
if (child2 == 0){
    for (i=1; i<=atoi(argv[2]); i++){
        if(b !=0){
            b=fork();
            if (b == 0){
            printf("pid=%d ppid=%d\n", getpid(),getppid());
            exit(1);
            }
        }
    }
}
printf("pid=%d ppid=%d\n", getpid(),getppid());
return 0;
}

最佳答案

使用waitwaitpid在父级中等待所有子级完成执行。
小心别制造叉形炸弹。

关于c - parent 在 child 进入for循环之前死亡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30491446/

10-13 07:17