TLPI 第25 章 练习:Process Termination

TLPI 第25 章 练习:Process Termination 笔记和练习博客总目录见开始读TLPI。25-1如果一个子进程调用 exit(–1)父进程将看到什么退出状态由 WEXITSTATUS() 返回代码如下#includesignal.h#includestdint.h#includestdio.h#includestdlib.h#includeunistd.h#includesys/wait.hintmain(void){pid_tpid;intwait_status;pidfork();switch(pid){case-1:perror(fork);exit(EXIT_FAILURE);case0:puts(child - About to exit(-1).);exit(-1);default:printf(parent - About to wait.);wait(wait_status);printf(child exit status is %d\n,wait_status);printf(child exit status(WEXITSTATUS) is %d\n,WEXITSTATUS(wait_status));}}运行如下$ ./ex25-1 child - About to exit(-1). parent - About to wait.childexitstatus is65280childexitstatus(WEXITSTATUS)is255宏WEXITSTATUS正确的打印了返回值。其定义为/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */#define__WEXITSTATUS(status)(((status)0xff00)8)因为Linux x86是little endian因此WEXITSTATUS需要 0xff00。