我想使用fork()系统调用创建一个级别的进程树,如下所示 对于n = 4过程
我用以下代码尝试了这个,但这不起作用。 (这里1是父进程的孩子)
Liam got 6,andy got 6
我该怎么做?
答案 0 :(得分:1)
#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()); */
}