计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。下面是fork函数工作的一个例子。
#include <unistd.h> #include <stdio.h> int main () { pid_t fpid; //fork returns fpid int cnt=0; fpid=fork(); if (fpid < 0) printf("error in fork!"); else if (fpid == 0) { printf("I am the child process, process id : %d\n",getpid()); cnt++; } else { printf("I am the parent process, process id : %d\n",getpid()); cnt++; } printf("count: %d\n",cnt); return 0; }运行gcc fork.c -o fork得到fork可执行文件,运行:./fork
得到如下结果:
I am the parent process, process id : 1924 count: 1 I am the child process, process id : 1925 count: 1在fpid=fork();语句之后,就是两个进程执行从if(fpid<0)开始的代码。由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wu20093346/article/details/47018057