头歌 linux等待子进程结束,并且返回子进程的退出的代码。
时间: 2024-12-18 13:33:06 浏览: 4
在Linux下,如果你想要等待子进程结束并获取其退出状态,可以使用`wait`、`waitpid`或者`popen/pclose`函数配合。这里是一个简单的例子,使用`fork`创建子进程,然后父进程通过`waitpid`等待子进程结束:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t child_pid; // 子进程ID
int status; // 子进程退出状态
// 创建子进程
child_pid = fork();
if (child_pid == 0) { // 子进程
printf("Child process started, exiting...\n");
exit(0); // 子进程正常退出,状态码通常为0
} else if (child_pid > 0) { // 父进程
// 等待子进程结束
waitpid(child_pid, &status, 0);
// 检查子进程是否已退出以及其退出状态
if (WIFEXITED(status)) {
printf("Child process terminated with return code: %d\n", WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("Child process was terminated by signal: %d\n", WTERMSIG(status));
}
} else { // fork失败
perror("Failed to fork");
return -1;
}
return 0;
}
```
在这个示例中,如果子进程正常结束,父进程会打印出子进程的退出状态;如果是由于信号终止的,它会显示信号号。运行这个程序,你可以看到父进程如何跟踪子进程的生命周期。
阅读全文