在Linux中,WIFEXITED和WEXITSTATUS是用于處理子進程的退出狀態的宏。
下面是一個示例代碼,展示了如何使用WIFEXITED和WEXITSTATUS宏處理子進程的退出狀態:
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
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宏獲取子進程的退出狀態值。