在Linux系统下创建子进程-fork()函数

发布时间 2023-03-28 19:44:59作者: nakejimamiyuki

Linux系统下创建子进程

在Linux终端下输入命令:man 2 fork,查看fork()函数的描述:

/*
NAME
       fork - create a child process

    #include <sys/types.h>
    #include <unistd.h>

       pid_t fork(void);
       作用:用于创建子进程
       返回值:
            fork()的返回值会返回两次。一次是在父进程中返回,一次会在子进程中返回。
            在父进程中返回子进程的id,在子进程中返回0,通过fork()的返回值可以区分父进程和子进程。
            在父进程中返回-1,表示创建子进程失败,并设置perror。

*/

下面是简单案例:

#include <sys/types.h>
#include <unistd.h>
#include <iostream>
int main(){

    using std::cout;
    using std::endl;
    //创建子进程
    pid_t pid = fork();


    //判断是父进程还是子进程
    if(pid > 0){
            //如果大于零,返回的是子进程的进程号,当前在父进程
        cout<< "I am parent process,pid:"<<getpid()<<" ppid:"<<getppid()<<endl;
        cout<<"pid:"<<pid<<endl;
    }
    else if(pid == 0){
        //当前是子进程
        cout<<"I am child process,pid:"<<getpid()<<" ppid:"<<getppid()<<endl;
    }

    for(int i=0;i<5;i++){
        cout<<"i:"<<i<<" " <<"pid: "<<getpid()<<endl;
        sleep(1);
    }
    
}