fork()函数它仅仅被调用一次,却能够返回两次,返回值会有三种情况:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;3)如果出现错误,fork返回一个负值;
对于
#include <stdio.h>
int main(int argc, char* argv[])
{
fork();
fork() && fork() || fork();
fork();
}
不算main这个进程自身,程序到底创建了多少个进程?
每一次调用fork()函数都会产生两个返回值不同的进程,对于 fork() && fork() || fork();
有假设分别为A&&B||C,则A执行后会出现forkA(+)和forkA(0)两个分支,而对于forkA(+)会接着执行B,B会出现forkB(+)和forkB(0)两个分支,对于forkB(+),不会执行C,对于forkB(0),会继续执行C。C执行后会出现forkC(+)和forkC(0)两个分支,同理可以推导出,整个语句最后共有5个分支,然后整个代码共有
1-->2——>2*5——>2*5*2=20个,包括main函数,如果去掉main函数共有19个。