在 UNIX 和类 UNIX 系统中,`fork()` 是用于创建新进程的系统调用。它将当前进程(父进程)复制一份,创建一个新的子进程。`fork()` 调用返回两次:一次在父进程中,并返回子进程的进程ID;一次在子进程中,并返回值 0。可以通过对这些返回值进行判断,决定接下来在父进程和子进程中执行的不同操作。
fork() 函数的返回值解释
1. 父进程中 fork() 的返回值:
- 在父进程中,`fork()` 的返回值是子进程的进程ID (PID)。如果 fork() 失败,返回 -1。
- 这使得父进程能够得到子进程的 PID,以便进行进程管理,如等待子进程完成,用信号通信等。
2. 子进程中 fork() 的返回值:
- 在子进程中,`fork()` 的返回值为 0。子进程用这个返回值来区分它自己和父进程,并执行不同的代码逻辑。
代码实例分析
两个代码示例很好地展示了 fork() 的行为。
示例 1
#include <stdio.h>
#include <unistd.h>int main() {
printf("Hello");
fork();