linux fork 函数

来源:互联网 发布:淘宝上1元秒杀是真的吗 编辑:程序博客网 时间:2024/04/30 14:48

     计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回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 : 1924count: 1I am the child process,  process id : 1925count: 1
     在fpid=fork();语句之后,就是两个进程执行从if(fpid<0)开始的代码。由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因此fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。

1 0
原创粉丝点击