Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78841
  • 博文数量: 20
  • 博客积分: 1481
  • 博客等级: 上尉
  • 技术积分: 452
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-11 11:01
文章存档

2011年(2)

2010年(18)

我的朋友

分类: LINUX

2010-12-22 20:55:42

#include
pid_t wait(int *stat_loc);

暂停父进程,直到子进程完成或退出。若stat_loc不为空则将子进程的退出代码或者状态信息保存到上面。下面这些宏解释这个状态信息

WIFEXITED(stat_val)                 如果子进程正常结束,它就取一个非零值
WEXITSTATUS (stat_val)          
如果WIFEXITED,则它返回子进程的退出代码
WIFSIGNALED (stat_val)          
如果子进程因为未捕获的信号而终止,取一个非零值。
WTERMSIG (stat_val)              
如果WIFSIGNALED返回非零,则返回信号代码
WIFSTOPPED(stat_val)             
如果子进程意外终止,它就取一个非零值。
WSTOPSIG (stat_val)               
如果WIFSTOPPED非零,则取一个信号代码。

子进程结束了,而父进程还没调用到Wait那么子进程就会变成僵尸进程。这个时候如果父进程异常终止,则子进程的PPID就会变成1. Init进程将会接管这个僵尸进程,并最终释放其占有的资源。但是这个过程比较慢,所以应该避免产生僵尸进程。

Pid_t waitpid(pid_t pid, int *stat_loc, int options);

Options 设置成WNOHANG可以查看子进程是否终止。

阅读(1226) | 评论(0) | 转发(1) |
0

上一篇:如何实现Printf()

下一篇:转一篇好文章

给主人留下些什么吧!~~