当前位置: 编程技术>c/c++/嵌入式
Linux C 获取进程退出值的实现代码
来源: 互联网 发布时间:2014-10-16
本文导语: 如以下代码所示: 代码如下:#include #include #include #include #include #include #include int main(int argc, char *argv[]){ pid_t pid; int stat; int exit_code; pid = fork(); if(pid == 0) { sleep(3); exit(5); } else if( pid < 0 ) { fprintf(stderr, "fork failed: %s", strer...
如以下代码所示:
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
pid_t pid;
int stat;
int exit_code;
pid = fork();
if(pid == 0)
{
sleep(3);
exit(5);
}
else if( pid < 0 )
{
fprintf(stderr, "fork failed: %s", strerror(errno));
return -1;
}
wait(&stat); // 等待一个子进程结束
if(WIFEXITED(stat)) // 如果子进程通过 return, exit, _exit 正常结束, WIFEXITED() 返回 true
{
exit_code = WEXITSTATUS(stat);
printf("child's exit_code: %dn", exit_code);
}
return 0;
}
参考: "man 2 wait"
代码如下:
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
pid_t pid;
int stat;
int exit_code;
pid = fork();
if(pid == 0)
{
sleep(3);
exit(5);
}
else if( pid < 0 )
{
fprintf(stderr, "fork failed: %s", strerror(errno));
return -1;
}
wait(&stat); // 等待一个子进程结束
if(WIFEXITED(stat)) // 如果子进程通过 return, exit, _exit 正常结束, WIFEXITED() 返回 true
{
exit_code = WEXITSTATUS(stat);
printf("child's exit_code: %dn", exit_code);
}
return 0;
}
参考: "man 2 wait"