以下代码将等待子进程完成,然后打印其返回代码。
int status;
wait(&status);
cout << "return code = " << WEXITSTATUS(status) << endl;
为什么返回代码不能存储在int变量中?为什么必须使用WEXITSTATUS函数进行转换?未转换的int变量的值代表什么?
答案 0 :(得分:15)
int
不仅仅包含退出代码 - 它还存储有关流程如何终止的信息,例如,如果已发出信号(WIFSIGNALED
)或调用了exit()
( WIFEXITED
)等。
W
宏用于从int
中提取各种信息。
答案 1 :(得分:3)
status
不仅包含进程的返回值,还包含为什么返回wait(2,3p)
调用(可能并不总是正常退出进程)。各种W*()
宏用于将返回值分解为其组成部分。