本文是Linux执行原理——Linux系统重要(概念/模块)汇总的续篇
下面是一个简单的 C 语言示例,演示了如何使用 fork
系统调用来创建一个子进程。这个示例中,父进程和子进程将分别打印不同的消息。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main() {pid_t pid;// 创建子进程pid = fork();if (pid < 0) {// fork 失败perror("fork failed");exit(1);} else if (pid == 0) {// 这是子进程printf("This is the child process. PID: %d\n", getpid());} else {// 这是父进程printf("This is the parent process. PID: %d, Child PID: %d\n", getpid(), pid);}// 所有进程都会执行到这里printf("Process PID: %d is executing.\n", getpid());return 0;
}
编译和运行
- 将上述代码保存为
fork_example.c
。 - 在终端中编译代码:
gcc -o fork_example fork_example.c
- 运行程序:
./fork_example
输出示例
运行程序后,您可能会看到类似以下的输出(顺序可能会有所不同,因为父进程和子进程是并行执行的):
This is the parent process. PID: 12345, Child PID: 12346
Process PID: 12345 is executing.
This is the child process. PID: 12346
Process PID: 12346 is executing.
在这个示例中,父进程和子进程分别打印了它们的 PID,并且都执行了最后一行的打印语句。由于进程是并行执行的,因此输出的顺序可能会有所不同。