2011-04-27 64 views
11

以下代码将等待子进程完成并打印其返回代码。为什么WEXITSTATUS甚至需要?

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

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

回答

14

int保持不仅仅是退出代码 - 它也存储关于过程如何终止的信息,例如,如果它是用信号通知(WIFSIGNALED),或者如果exit()被称为(WIFEXITED)等

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

3

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

相关问题