在Linux中,我们常用fork()来进行子进程的创建,首先我们看下怎么创建子进程:
#include<sys/types.h> #include<unistd.h> #include<stdlib.h> #include<stdio.h>
int main() { pid_t pid; pid = fork(); if(pid == 0) printf("the child ID = %d \n",getpid());//如果pid等于0,那么为子进程 if(pid > 0) printf("the father ID = %d \n",getpid());//如果pid大于0,为父进程 printf("pid=%d \n",pid);//打印此时的pid if(pid < 0) printf("fork failed");//如果小于0,进程创建失败
return 0; }
如上例,在cygwin中运行,得到如下结果:
carl.ma@CNQDSX-000211 ~/2_fork
$ ./fork.exe
the father ID = 8904
pid=6300
the child ID = 6300
pid=0
通过结果看出,fork之后的函数进行了两次运行,子进程和父进程都打印出了pid号,请问这是什么原因呢?欢迎坛友踊跃发言。