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

int main() {
    pid_t pid1, pid2;

    pid1 = fork();

    if (pid1 < 0) {
        printf("fork error\n");
        return -1;
    } else if (pid1 == 0) {
        // 子进程1
        printf('b\n');
    } else {
        pid2 = fork();
        if (pid2 < 0) {
            printf("fork error\n");
            return -1;
        } else if (pid2 == 0) {
            // 子进程2
            printf('c\n');
        } else {
            // 父进程
            printf('a\n');
        }
    }
    
    return 0;
}

运行结果:

a
b
c

解析:

当程序运行时,先创建了一个子进程1,此时父进程和子进程1同时在运行。子进程1输出字符'b'。接着,父进程创建了另一个子进程2,此时父进程、子进程1和子进程2同时在运行。子进程2输出字符'c'。最后,父进程输出字符'a'。

由于进程是并发执行的,所以输出的顺序可能不同。但是,无论输出顺序如何,每个进程都只输出了一个字符,符合题目要求。

C语言使用fork()创建两个子进程并输出字符 - 详解与代码示例

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

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