在C中使用fork()创建特定的进程树
我不知道怎么解决这个问题。我需要使用C中的在C中使用fork()创建特定的进程树,c,linux,bash,tree,C,Linux,Bash,Tree,我不知道怎么解决这个问题。我需要使用C中的fork()、if和else创建一个进程树。 树需要如下所示: a.out---a.out---a.out | |--a.out---a.out---a.out | |--a.out---a.out---a.out | |--a.out a.out---a.out | |--a.out---a.out---a.out | |--a.out---a.o
fork()
、if
和else
创建一个进程树。
树需要如下所示:
a.out---a.out---a.out
|
|--a.out---a.out---a.out
|
|--a.out---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;
}
看起来它应该这样做:
#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;
}
#包括
#包括
#包括
int main(){
if(fork()){
//母公司
if(fork()){
//母公司
if(fork()){
//母公司
if(fork()){
//母公司
}
否则{
//儿童4
}
}
否则{
//儿童3
if(fork()){
//儿童3
}
否则{
//儿童1/3
if(fork()){
//儿童1/3
}
否则{
//孙子女1/3
}
}
}
}
否则{
//儿童2
if(fork()){
//儿童2
}
否则{
//儿童1/2
if(fork()){
//儿童1/2
}
否则{
//孙子女1/2
}
}
}
}
否则{
//儿童1
if(fork()){
//儿童1
}
否则{
//儿童1中的儿童1
}
}
暂停();
返回0;
}
理想情况下,您应该添加一些存储各种PID的变量,并将它们与它们的父级一起打印出来,这样您就可以看到它们了。您确定您的代码会生成第二棵树吗?图表是如何解释的?孩子们是水平的,垂直的,什么?@Duck,我相信两者都是。最上面的a.out有4个孩子,第一个有一个孩子,第二个和第三个孩子有一个孩子和孙子,第四个没有孩子。好的,这是有道理的。谢谢结果是:'a.out--a.out |--2*[a.out--a.out--a.out--a.out]|--a.out--a.out--a.out--a.out跟我需要的一样吗?