fork调用两个子进程

环境:Ubuntu 18.04LTS
语言:C
在操作系统课程设计中,需要用到fork()系统调用,于是试了一下调用两个子进程。

这是man fork指令的内容,包括头文件和函数原型:

NAME
       fork - create a child process

SYNOPSIS
       #include 
       #include 

       pid_t fork(void);

测试用的代码:

#include  
#include   
#include
int main()  
{  
    pid_t pid,pid2; 
    int count=0; 
    pid=fork();  
    pid2=fork();

    printf("---------\n");
    if (pid == 0) { 
        printf("this pid:%d\n",getpid());  
        printf("pid1:%d\n",pid);
        printf("pid2:%d\n",pid2);
        count++; 
    } 
    else { 
        printf("this pid:%d\n",getpid());  
        printf("pid1:%d\n",pid);
        printf("pid2:%d\n",pid2);
        count++; 
    } 

    printf("---------\n");

    if(pid2==0){
        printf("this pid:%d\n",getpid());
        printf("pid1:%d\n",pid);
        printf("pid2:%d\n",pid2);
    }
    else{
        printf("this pid:%d\n",getpid());
        printf("pid1:%d\n",pid);
        printf("pid2:%d\n",pid2);
    }
    // printf("统计结果是: %d\n",count); 
    return 0; 
} 

输出:

---------
this pid:6990
pid1:6991
pid2:6992
---------
this pid:6990
pid1:6991
pid2:6992
---------
this pid:6992
pid1:6991
pid2:0
---------
this pid:6992
pid1:6991
pid2:0
---------
this pid:6993
pid1:0
pid2:0
---------
this pid:6993
pid1:0
pid2:0
---------
this pid:6991
pid1:0
pid2:6993
---------
this pid:6991
pid1:0
pid2:6993

父进程pid为6990
子进程1为6991
子进程2为6992

奇怪的出现了pid为6993的进程,而且在6993中,pid1,pid2都是0。

你可能感兴趣的:(fork调用两个子进程)