【Linux】进程通信实战 —— 进程池项目
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#define MAX_PROCESSES 5
int main() {
pid_t child_pid;
int i;
for (i = 0; i < MAX_PROCESSES; ++i) {
child_pid = fork();
if (child_pid == 0) {
// 子进程中执行的代码
printf("子进程 PID: %d, 父进程 PID: %d\n", getpid(), getppid());
exit(EXIT_SUCCESS); // 子进程结束
} else if (child_pid < 0) {
// fork 失败处理
perror("fork failed");
exit(EXIT_FAILURE);
}
// 父进程中继续创建新的进程或者等待已创建的进程结束
}
// 父进程等待子进程结束
while (wait(NULL) > 0) {
// 正在等待任何一个子进程结束
}
return EXIT_SUCCESS;
}
这段代码使用了fork()
系统调用来创建多个子进程,并在子进程中打印出它们的PID以及父进程的PID。父进程使用wait()
系统调用来等待子进程的结束。这是一个简单的进程池管理的例子,适合用于教学目的。
评论已关闭