我不知道该怎么解决。我需要在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
最佳答案
看起来应该这样做:
#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,并与他们的父母一起打印出来,这样您就可以看到它。
关于c - 在C语言中使用fork()创建特定的进程树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24071471/