Unix fork()系统调用
好日间全部Unix fork()系统调用
我很困惑fork()
。 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();
如果有人纠正我,我会很高兴。
fork
没有“创建父母和子女的过程”,没有。它创建当前进程的副本(副本是子进程,当前进程是父进程)。区别是基于fork
返回值完成的。
fork(); fork()是2个进程的副本,对不对?那么fork(); fork(); fork()是4个复制过程的副本吗? – mydreamadsl 2012-01-02 17:16:11
阅读http://en.wikipedia.org/wiki/Fork_%28operating_system%29 – 2012-01-02 17:16:52
@ user1098207 - ** no **。 – littleadv 2012-01-02 17:18:18
我不明白你的图纸,我不明白你的问题。一个成功的'fork()'系统调用可以更好地理解为调用它的过程的魔法克隆。 – 2012-01-02 17:05:22
fork创建父项和子项的过程,对吗? 像pid == 0为孩子和pid> 0为父 所以当我分叉() 和打印X和打印为孩子和父母 – mydreamadsl 2012-01-02 17:07:13
问题是什么? – 2012-01-02 17:07:41