Linux fork() 系统调用创建子进程示例:父进程和两个子进程输出字符
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'。注意,输出的顺序可能会发生变化,因为这三个进程的运行顺序是不确定的。
原文地址: https://www.cveoy.top/t/topic/nEP8 著作权归作者所有。请勿转载和采集!