所有人的白天很好
我对fork()
感到困惑。 fork()for fork子进程还是只有父进程?
请帮助解决一些例子
#include <unistd.h>
#include <stdio.h>
int main() {
if (fork()) {
fork();
printf(" X\n");
}
return 0;
}
这就是我想要构建流程的方式:
parent
|
/ \
Parent Child
所以输出将是
X X X
另一个例子是
#include <unistd.h>
#include <stdio.h>
int main() {
fork();
fork();
fork();
printf(" X \n");
return 0;
}
图表会是这样的吗?
Fork start
/ \
Parent Child 1st fork done output 2 of X
/ \ / \
P C P C 2nd fork done output 4 of X
/ \ / \ /\ /\
P C P C P C P C 3rd fork done output 8 of X
另一个问题我怎样画
if (fork() || fork() || fork())
fork();
或
if (fork() && fork())
fork();
如果有人纠正我,我会很高兴。
答案 0 :(得分:3)
fork
没有“创建父子进程”,没有。它创建当前进程的副本(副本是子进程,当前进程是父进程)。区别是基于fork
返回值完成的。