我不知道如何解决这个问题。我需要在C中使用fork()
,if
和else
制作流程树。
树需要看起来像这样:
a.out---a.out---a.out
|
|--a.out---a.out---a.out
|
|--a.out---a.out---a.out
|
|--a.out
我已经有了这个:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (void){
if(fork()){
if(fork()){}
else{}
if(fork()){}
else{fork();}
}
else{}
pause();
return 0;
}
将创建一个如下所示的进程树:
a.out---a.out
|
|--a.out---a.out---a.out
|
|--a.out---a.out
答案 0 :(得分:0)
这看起来应该这样做:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
if (fork()) {
// parent
if (fork()) {
// parent
if (fork()) {
// parent
if (fork()) {
// parent
}
else {
// child 4
}
}
else {
// child 3
if (fork()) {
// child 3
}
else {
// child 1 of child 3
if (fork()) {
// child 1 of child 3
}
else {
// grandchild 1 of child 3
}
}
}
}
else {
// child 2
if (fork()) {
// child 2
}
else {
// child 1 of child 2
if (fork()) {
// child 1 of child 2
}
else {
// grandchild 1 of child 2
}
}
}
}
else {
// child 1
if (fork()) {
// child 1
}
else {
// child 1 of child 1
}
}
pause();
return 0;
}
理想情况下,您可以添加一些存储各种PID的变量,并与父母一起打印出来,这样您就可以看到它。