在Linux中,WIFEXITED和WEXITSTATUS是用于处理子进程的退出状态的宏。
- WIFEXITED宏用于检查子进程是否正常退出。如果子进程正常退出,则WIFEXITED宏返回非零值;否则返回0。
- WEXITSTATUS宏用于获取子进程的退出状态值。如果WIFEXITED宏返回非零值,即子进程正常退出,则使用WEXITSTATUS宏获取子进程的退出状态值。
下面是一个示例代码,展示了如何使用WIFEXITED和WEXITSTATUS宏处理子进程的退出状态:
#include#include #include int main() { pid_t pid; int status; // 创建子进程 pid = fork(); if (pid == 0) { // 子进程执行的代码 printf("子进程正在执行...\n"); // 子进程正常退出,退出状态值为42 exit(42); } else if (pid > 0) { // 父进程执行的代码 wait(&status); if (WIFEXITED(status)) { printf("子进程正常退出,退出状态值为 %d\n", WEXITSTATUS(status)); } } else { // fork失败 printf("创建子进程失败\n"); return 1; } return 0; }
运行以上代码,将会输出:
子进程正在执行... 子进程正常退出,退出状态值为 42
这里使用WIFEXITED宏检查子进程是否正常退出,然后使用WEXITSTATUS宏获取子进程的退出状态值。