如何使用exec()系统调用创建子进程的子进程?

时间:2017-02-05 23:27:22

标签: c unix fork exec system-calls

我正在尝试创建父和子的树,其中use可以为每个父进程选择子进程数。递归地,我还希望每个子进程创建父进程创建的相同数量的子进程。但我不确定如何使用execv()系统调用?

for(int i = 0; i < c; i++) {
    printf("*** Inside the for loop ***\n");
    if(h > 1){
        pid = fork(); /*Creating the child*/
        if(pid) {
            //parent
            continue;
        } 
        else {
            if(pid == 0) {
                //execv();
                break;
            } else {
                printf("fork error\n");
                exit(1);
            }
        }   

    }
}
while((wpid == wait(&status)) > 0);
printf("%d : Waiting is done! Ending up\n", getpid());

上面的代码是main()的一部分并且工作正常。但我不确定如何创建子进程的子进程。有人可以帮我这个吗?也可以将exec()调用用于上述目的吗?

编辑:c和h是孩子的数量和树的高度。我总是在h-1高度创建子进程。并且树的每个节点下面有3个子节点。除非所有孩子都被终止或完成,否则父母也不会退出。

0 个答案:

没有答案