当前位置:首页 > 全部文章 > 正文

LINUX 中fork之后,父子进程是如何各自执行自己的代码的

//这个演示父子进程如何执行各自的代码
#include <stdio.h>
#include <stdlib.h>  //malloc,exit
#include <unistd.h>  //fork
#include <signal.h>

int g_mygbltest = 0; //定义了一个全局变量,父子进程会有各自的

int main(int argc, char *const *argv)
{
    pid_t  pid;
    printf("进程开始执行!\n");  
    //---------------------------------
    pid = fork();  //创建一个子进程

    //要判断子进程是否创建成功
    if(pid < 0)
    {
        printf("子进程创建失败,很遗憾!\n");
        exit(1);
    }

    //现在,父进程和子进程同时开始 运行了
    //走到这里,fork()成功,执行后续代码的可能是父进程,也可能是子进程
    if(pid == 0)//子进程的fork()返回值是0
    {
        //这里专门针对子进程的处理代码
        while(1)
        {
            g_mygbltest++;
            sleep(1); //休息1秒
            printf("现在是子进程在输出,进程id=%d,子进程的变量g_mygbltest=%d!\n",getpid(),g_mygbltest);
        }
    }
    else
    {
        //这里就是父进程,因为父进程的fork()返回值会 > 0(实际返回的是子进id程)
        //这是专门针对父进程的处理代码
        while(1)
        {
            g_mygbltest++;
            sleep(5); //休息5秒,父进程sleep的时间长,变量增加的慢
            printf("......现在是父进程,进程id=%d,g_mygbltest=%d!\n",getpid(),g_mygbltest);
        }
    }

    return 0;
}




更新时间 2025-09-28