码迷,mamicode.com
首页 > 系统相关 > 详细

linux fork 函数

时间:2015-07-23 12:14:56      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:linux   fork   进程   

     计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回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函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

linux fork 函数

标签:linux   fork   进程   

原文地址:http://blog.csdn.net/wu20093346/article/details/47018057

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!