处理父亲儿子foro /管道

时间:2013-11-16 22:05:57

标签: c process fork

我有一个建议用管道创建一个进程,我已经建立了20个孩子。有用!但最复杂的问题是满足以下要求:

我必须为每个孩子创建一个孙子,对子号码(c.e. 2nd,4rth,6th,..)最后我必须为每个可被6整除的孙子创建一个大格兰森。(c.e。 第6个孙子,12日,18日)

我很抱歉,但我是unix和并发程序的新手。这是我的简单代码作为开始的基础。

代码:

#include <unistd.h>
#include <sys/types.h>
main(){
pid_t pid;
int i, n=20;

for (i=0; i<n; i++) {
 pid=fork();
 if (pid == 0) break;
}
printf(“\n The father in the process %d is %d”, getpid(),getppid());
}

1 个答案:

答案 0 :(得分:0)

未经测试,但我认为这可以满足您的需求:

#include <unistd.h>
#include <sys/types.h>
main(){
pid_t pid;
pid_t spid;
pid_t sspid;
int i, n=20;

for (i=0; i<n; i++) {
    pid=fork();
    if (pid == 0){
        // Son process
        if(i%2 == 0){
            //Son process && even
            spid = fork();
            if (spid == 0){
                // Grand son process
                if(i%3 == 0){
                    sspid = fork();
                    if (sspid == 0){
                        // Great grand son process
                    } else {
                        // Grand son process
                    }
                }
            }
        }
        break; // to avoid continuing the for in the child processes
    } else {
        // Main process
    }
 }
 printf(“\n The father in the process %d is %d”, getpid(),getppid());
}