【Linux取经路】进程控制——进程等待
在Linux系统中,可以使用wait
或waitpid
函数来等待一个子进程结束。以下是使用wait
函数的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
// 错误处理
perror("fork failed");
exit(EXIT_FAILURE);
}
if (pid > 0) {
// 父进程
int status;
pid_t finished_pid = wait(&status); // 等待任何子进程结束
if (finished_pid == -1) {
// 错误处理
perror("wait failed");
} else {
printf("子进程结束, PID: %d\n", finished_pid);
// 检查子进程的退出状态
if (WIFEXITED(status)) {
printf("子进程正常结束, 退出状态: %d\n", WEXITSTATUS(status));
}
}
} else if (pid == 0) {
// 子进程
printf("子进程正在运行,PID: %d\n", getpid());
sleep(5); // 睡眠5秒钟模拟工作
return 42; // 子进程返回状态
}
return 0;
}
这段代码首先使用fork
创建一个子进程,然后在父进程中使用wait
来等待子进程结束。wait
函数会阻塞父进程直到有子进程结束。函数返回时,它会填充传入的status
参数,以便了解子进程的退出状态。
评论已关闭