Linux编写一个C程序,使用 fork()函数创建子进程。
时间: 2024-09-27 15:08:33 浏览: 57
Linux中使用C语言的fork()函数创建子进程的实例教程
在Linux下,编写一个C程序使用`fork()`函数创建子进程的基本步骤如下:
1. 包含头文件:首先需要包含`unistd.h`头文件,它包含了`fork()`函数的声明。
```c
#include <unistd.h>
```
2. 主函数:在主函数`main()`中,通常会有一个检查是否成功fork()的部分,因为`fork()`可能会返回两个值,0表示子进程,非零值表示父进程。如果fork()失败,`errno`会被设置,并且`fork()`会返回-1。
```c
pid_t pid = fork(); // 创建子进程
if (pid == -1) {
perror("Fork failed"); // 检查错误并打印
exit(EXIT_FAILURE); // 终止程序
}
```
3. 子进程处理:当`fork()`返回0时,这意味着当前执行的是子进程。可以在此处添加特定于子进程的操作,如改变工作目录、设置信号处理器等。
```c
if (pid == 0) {
// 在这里执行子进程特有的操作
}
```
4. 父进程处理:如果`fork()`返回非零值,那么当前的就是父进程。你可以选择等待子进程完成,然后结束自身。
```c
else { // 父进程
wait(NULL); // 等待子进程结束
printf("Parent process finished.\n");
exit(EXIT_SUCCESS); // 父进程退出
}
```
5. 结束程序:记得在适当的时候关闭所有打开的文件描述符,并清理资源,然后使用`exit()`函数终止程序。
完整的示例代码:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
perror("Fork failed");
return EXIT_FAILURE;
}
if (pid == 0) {
printf("I am the child process with PID %d\n", getpid());
} else {
printf("I am the parent process with PID %d, waiting for the child...\n", getpid());
wait(NULL);
printf("Child process ended.\n");
}
return 0;
}
```
阅读全文