为什么需要weexitstatus ?

Why is WEXITSTATUS even needed?

本文关键字:weexitstatus 为什么      更新时间:2023-10-16

下面的代码将等待子进程完成,然后打印其返回代码。

int status;
wait(&status);
cout << "return code = " << WEXITSTATUS(status) << endl;

为什么返回代码不能存储在int变量中?为什么必须用函数WEXITSTATUS进行转换?未转换的int变量的值表示什么?

int保存的不仅仅是退出代码-它还存储有关进程如何终止的信息,例如,如果它被发出信号(WIFSIGNALED),或者如果exit()被调用(WIFEXITED),等等。

W宏用于从int中提取各种信息。

status不仅包含进程的返回值,还包含为什么 wait(2,3p)调用返回(这可能并不总是进程的正常退出)。各种W*()宏用于将返回值分解为其组成部分。