租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

linux中WIFEXITED和WEXITSTATUS的含义是什么,linux wired network

发布时间:2023-12-07 04:57:16

linux中WIFEXITED和WEXITSTATUS的含义是甚么

在Linux中,WIFEXITED和WEXITSTATUS是用于处理子进程的退出状态的宏。

  1. WIFEXITED宏用于检查子进程是否是正常退出。如果子进程正常退出,则WIFEXITED宏返回非零值;否则返回0。
  2. WEXITSTATUS宏用于获得子进程的退出状态值。如果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("子进程正在履行...
");
        // 子进程正常退出,退出状态值为42
        exit(42);
    } else if (pid > 0) {
        // 父进程履行的代码
        wait(&status);

        if (WIFEXITED(status)) {
            printf("子进程正常退出,退出状态值为 %d
", WEXITSTATUS(status));
        }
    } else {
        // fork失败
        printf("创建子进程失败
");
        return 1;
    }

    return 0;
}

运行以上代码,将会输出:

子进程正在履行...
子进程正常退出,退出状态值为 42

这里使用WIFEXITED宏检查子进程是否是正常退出,然后使用WEXITSTATUS宏获得子进程的退出状态值。