linux waitpid() 的思考
pid_t waitpid(pid_t pid,int * status,int options);开始我pid=fork()
我在父进程中用
int stauts;
waitpid(pid,&status,0);
子进程中用return 2
为什么打印status的值为512,而不是2,子进程的return的返回值不是它退出时候的状态吗 return不是退出状态。
退出状态和return没多大关系。
请参考apue第二版8.6节
waitpid的status,需要用宏 WEXITSTATUS来获取子进程退出状态。man里有详细的解释
#include <stdio.h>
#include <sys/wait.h>
int main()
{
printf("%d\n", WEXITSTATUS(512));
return 0;
}结果就会输出2.
页:
[1]