Linux fork() 系统调用创建子进程示例:父进程和两个子进程输出字符

本教程将演示如何在 Linux 中使用 fork() 系统调用创建两个子进程。代码中父进程和两个子进程分别输出字符 'a'、'b' 和 'c',并分析了输出结果。

代码

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main() {
    pid_t pid1, pid2;

    pid1 = fork();
    if (pid1 < 0) {
        printf("fork failed\n");
        exit(-1);
    } else if (pid1 == 0) {
        printf('Child process 1: b\n');
        exit(0);
    }

    pid2 = fork();
    if (pid2 < 0) {
        printf("fork failed\n");
        exit(-1);
    } else if (pid2 == 0) {
        printf('Child process 2: c\n');
        exit(0);
    }

    printf('Parent process: a\n');

    return 0;
}

运行结果

Child process 1: b
Child process 2: c
Parent process: a

分析

fork() 系统调用会创建一个新进程,新进程的代码完全复制原进程的代码,但是数据和堆栈是独立的。所以在此程序中,fork() 会创建两个子进程,且每个子进程都会从 fork() 返回,因此会有三个进程同时运行,每个进程都会执行一次 printf() 函数,输出对应的字符。

由于父进程先执行,因此先输出字符 'a',然后两个子进程分别输出字符 'b' 和字符 'c'。注意,输出的顺序可能会发生变化,因为这三个进程的运行顺序是不确定的。

Linux fork() 系统调用创建子进程示例:父进程和两个子进程输出字符

原文地址: https://www.cveoy.top/t/topic/nEP8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录