标签:
fork()函数可以让进程拷贝出一个几乎与其一模一样的子进程出来,fork函数调用一次却会返回两次:
一次在父进程,一次在子进程。它的返回值取决于当前进程,如果是子进程则返回0,父进程则返回子进程PID。
一般来说父子进程有如下特点:
1 父进程与子进程是并发执行;
2 相同但是相对独立的地址空间;
3 共享文件IO。
一段简单的代码如下所示:
1 #include<unistd.h> 2 #include<stdio.h> 3 4 int main() 5 { 6 // int i=0; 7 pid_t fpid; 8 fpid=fork(); 9 if(fpid<0) 10 { 11 printf("error in fork()\n"); 12 } 13 else if(fpid==0) 14 { 15 printf("pid==%d\n",getpid()); 16 printf("fpid=0\n"); 17 } 18 else if(fpid>0) 19 { 20 21 printf("pid==%d\n",getpid()); 22 printf("fpid!=0\n"); 23 } 24 25 return 0; 26 }
编译执行后结果:
1 $:~/sb/codetest$ ./a.out 2 fpid=7262 3 pid==7261 4 fpid!=0
5 fpid=0 6 pid==7262 7 fpid=0
标签:
原文地址:http://www.cnblogs.com/filmskin/p/5364719.html