Linux系统调用fork

2021-07-16  本文已影响0人  艾满
//fork_test.c
//Linux/Unix系统中内置头文件,包含了许多系统服务的函数原型,例如read、write和getpid函数等
#include <unistd.h>
#include <stdio.h>

/** 
 * fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
 *  1)在父进程中,fork返回新创建子进程的进程ID;
 *  2)在子进程中,fork返回0;
 *  3)如果出现错误,fork返回一个负值;
 */
int main(int argc, char const *argv[])
{
    pid_t fpid; //fpid表示fork函数返回的值  
    int count=0;  
    fpid=fork(); //返回值:根据是父进程还是子进程不同而值不同  
    if (fpid < 0)   
        printf("error in fork!");   
    else if (fpid == 0) {  //子进程返回值为0
        printf("我是子进程,getpid=%d,fpid=%d\n",getpid(),fpid);//getpid是获取当前进程的id,还有getppid是获取父进程的id 
        count++;  
    } else {  //父进程返回的是子进程的id;父进程里的当前id就是子进程里返回的进程id
        printf("我是父进程getpid=%d,fpid=%d\n",getpid(),fpid);  
        count++;  
    }  
    printf("统计结果是: %d\n",count);  
    return 0;
}

执行结果:


image.png
上一篇下一篇

猜你喜欢

热点阅读