为什么甚至需要WEXITSTATUS?

时间:2011-04-27 06:29:43

标签: c++ process return-value

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

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

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

2 个答案:

答案 0 :(得分:15)

int不仅仅包含退出代码 - 它还存储有关流程如何终止的信息,例如,如果已发出信号(WIFSIGNALED)或调用了exit()WIFEXITED)等。

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

答案 1 :(得分:3)

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

相关问题