1.什么是fork()函数
通过系统调用创建一个与原来进程除进程号外基本一样的进程,如下例子。
int main(){
pid_t pid;
int count =0;
pid = fork(); //就在这里新建了一个子进程,所以这里存在两个进程同时执行
//且父进程pid==0,子进程pid >0
if(pid == 0){
printf("this is child process");
count+=2;
printf(count);
}
if(pid > 0){
printf("this is father process");
count+=1;
printf(count);
}
else{
printf("ERROR:fork()");
}
}
输出结果为
this is father process
1
this is child process
2
由结果可见,父进程PID等于0,新建子进程PID大于0
进程的创建需要时间,所以父进程在子进程创建的时候就走完了代码,打印了count等于1
等父进程走完后,子进程才开始走。
根据https://www.cnblogs.com/bastard/p/2664896.html的博客代码得出一个结论:
既使加入了for循环,即两个进程同时fork时,同时创建两个子进程,也会先执行完父进程再走子进程,因为子进程的创建是需要时间的。