说明fork()函数的作用,并举例说明。
时间: 2024-10-02 08:03:48 浏览: 27
举例讲解C语言的fork()函数创建子进程的用法
`fork()`是Unix/Linux操作系统提供的一个系统调用,主要用于创建一个新的进程。它的作用是复制当前进程的所有资源(如数据段、堆栈和打开的文件描述符),然后创建一个新的独立进程,新的进程称为子进程。原始进程(父进程)和新创建的子进程共享相同的代码和数据区域,但在各自的堆栈上执行。
当父进程调用`fork()`时,如果操作成功,返回0给子进程,返回子进程ID(通常是一个正整数)给父进程;如果失败,则返回-1,并设置errno为ENOMEM或其他错误码。子进程的ID等于其父进程的ID(因为它们在内存映射表中共享相同的地址)。
例如:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t child_pid;
if ((child_pid = fork()) == 0) { // 子进程部分
printf("I am the child process with PID: %d\n", getpid());
} else if (child_pid > 0) { // 父进程部分
printf("I am the parent process with PID: %d, and my child is: %d\n", getpid(), child_pid);
wait(NULL); // 等待子进程结束
} else { // fork()失败的情况
perror("Fork failed");
exit(EXIT_FAILURE);
}
return 0;
}
```
在这个例子中,如果`fork()`成功,父进程将看到消息"I am the parent process...",而子进程则会打印"I am the child process..."; 如果`fork()`失败,父进程将捕获错误并退出。
阅读全文