Как создать одноуровневое дерево процессов с помощью системного вызова fork ()?

Я хочу создать одноуровневое дерево процессов, используя системный вызов fork (), который выглядит следующим образом
для процесса n = 4

введите описание изображения здесь

Я пробовал это с помощью следующего кода, но это не работает. (здесь 1 является потомком родительского процесса)

    for(i = 0 ;i < n; i++){
chid = fork();
if ( chid == 0 ){
printf("%d\n",getpid());
while(++i < n){
chid = fork();
if(chid == 0){
printf(" %d ",getpid());
break;
}
}
}
else
break;
}

Как я могу сделать это?

0

Решение

#include<stdio.h>

int main()
{
int i;
pid_t  pid;

for(i=0; i<5; i++)
{
pid = fork();
if(pid == 0)
break;
}
printf("pid %d ppid %d\n", getpid(), getppid());
if(pid == 0)
{
/* child process */
}
}

Основываясь на обсуждении, вот модифицированная программа.

#include<stdio.h>
#include<unistd.h>

int main()
{
int i;
pid_t  pidparent, pid;

if( (pidparent = fork()) == 0 )
{
for(i=0; i<3; i++)
{
pid = fork();
if(pid == 0)
break;
}
if(pid == 0)
{
printf("child %d parent %d\n", getpid(), getppid());
}
}
else
{
printf("parent %d \n", pidparent);
}
/* printf("pid %d ppid %d\n", getpid(), getppid()); */
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]