fork()
时间: 2023-08-09 09:05:28 浏览: 53
`fork()` 是一个系统调用,用于创建一个新的进程(子进程)。在调用 `fork()` 之后,当前进程(父进程)会创建一个与其完全相同的子进程,然后这两个进程会并行运行。父进程和子进程之间唯一的差别是它们的进程 ID 不同。子进程的进程 ID 是 0,而父进程的进程 ID 则是原来的进程 ID。
`fork()` 的函数原型如下:
```c
#include <unistd.h>
pid_t fork(void);
```
`fork()` 函数没有参数,如果调用成功,它将返回两次。在父进程中,`fork()` 返回子进程的进程 ID,而在子进程中,`fork()` 返回 0。如果出现错误,则 `fork()` 返回 -1。
下面是一个简单的例子,用于说明 `fork()` 的基本用法:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid == -1) {
// 如果出现错误
printf("Error: fork() failed.\n");
} else if (pid == 0) {
// 子进程
printf("Child process.\n");
} else {
// 父进程
printf("Parent process.\n");
}
return 0;
}
```
运行结果如下:
```
Parent process.
Child process.
```
可以看到,程序输出了两个进程的信息,分别是父进程和子进程。在父进程中,`fork()` 函数返回子进程的进程 ID,因此输出 "Parent process."。而在子进程中,`fork()` 函数返回 0,因此输出 "Child process."。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)