surpassgood 发表于 2013-07-23 09:46

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的返回值不是它退出时候的状态吗

cxytz01 发表于 2013-07-23 10:28

return不是退出状态。
退出状态和return没多大关系。
请参考apue第二版8.6节



djsxut 发表于 2013-07-24 11:12

waitpid的status,需要用宏 WEXITSTATUS来获取子进程退出状态。man里有详细的解释
#include <stdio.h>
#include <sys/wait.h>

int main()
{
    printf("%d\n", WEXITSTATUS(512));

    return 0;
}结果就会输出2.
页: [1]
查看完整版本: linux waitpid() 的思考