一个常见的C语言多进程编程实例是使用fork()函数创建子进程。通过fork()函数,父进程可以创建一个完全相同的子进程,子进程可以执行不同的任务。
例如,可以使用多进程编程来实现并行计算,其中父进程将任务分配给多个子进程,每个子进程独立执行任务并返回结果。
另一个例子是使用多进程编程来实现服务器,其中父进程监听客户端连接,每个新的客户端连接都会创建一个新的子进程来处理请求。这些例子展示了C语言多进程编程的灵活性和强大性。
在C语言中,可以使用`fork()`函数创建子进程,并使用`wait()`或`waitpid()`函数等待子进程结束。以下是一个简单的多进程编程实例,展示了如何使用`fork()`创建两个子进程,并在每个进程中打印一条信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid1, pid2;
// 创建第一个子进程
pid1 = fork();
if (pid1 < 0) {
perror("fork");
exit(1);
}
if (pid1 == 0) {
// 第一个子进程
printf("这是第一个子进程,进程ID为:%d ", getpid());
} else {
// 父进程
pid2 = fork();
if (pid2 < 0) {
perror("fork");
exit(1);
}
if (pid2 == 0) {
// 第二个子进程
printf("这是第二个子进程,进程ID为:%d ", getpid());
} else {
// 父进程等待子进程结束
int status1, status2;
waitpid(pid1, &status1, 0);
waitpid(pid2, &status2, 0);
printf("两个子进程均已结束,父进程ID为:%d ", getpid());
}
}
return 0;
}
```
这个例子中,`fork()`函数用于创建子进程。`waitpid()`函数用于等待子进程结束,并收集子进程的退出状态。在C语言中,子进程的ID在父进程中为0,因此可以通过检查`pid`的值来判断当前进程是子进程还是父进程。
请注意,多进程编程可能会导致资源竞争和死锁等问题,因此在编写实际程序时需要格外小心。