【Linux基础】wait和waitpid函数

1. wait和waitpid函数说明
wait函数是用于使父进程阻塞,直到一个子进程终止或者该进程接到了一个指定的信号为止。如果该父进程没有子进程或者他的子进程已经终止,则wait就会立即返回。
waitpid函数的作用和wait一样,但它并不一定要等待第一个终止的子进程,它还有若干项,如可提供一个非阻塞版本的wait功能。实际上wait函数只是waitpid函数的一个特例。
2. wait和waitpid函数格式说明

01.jpg (43.79 KB, 下载次数: 0)

下载附件 保存到相册 设为封面

2013-6-6 11:00 上传

02.jpg (92.02 KB, 下载次数: 0)

下载附件 保存到相册 设为封面

2013-6-6 11:00 上传

3. waitpid函数实例
wait函数只是waitpid函数的一个特例,所以这里只举使用waitpid函数的实例。
/*waitpid.c*/
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
pid_t result1,result2;
result1=fork();(创建新进程)
if(result1<0)
printf("fork fail\n");
else if(result1==0)
{
printf("sleep 3s in child\n ");
sleep(3); (子进程暂停3s)
exit(0);
}
else
{
/*不断地在测试子进程是否退出*/
do
{
result2=waitpid(result1,NULL,WNOHANG);
if(result2==0)(如果子进程没有退出就返回值为0)
{
printf("The child process has not exited\n");
sleep(1);
}
}while(result2==0);
if(result1==result2)
printf("The child process has exited\n");
}
}
编译运行结果为
[root@localhost waitpid]./waitpid
sleep 3s in child
The child process has not exited
The child process has not exited
The child process has not exited
The child process has exited
通过运行结果可知道父进程在没有捕获到子进程的退出信号,就会不断地循环,直到子进程退出为止,子进程不退出,waitpid返回值为0。
 
本文转载于唯C教育,【Linux基础】wait和waitpid函数
http://www.weicedu.com/forum.php?mod=viewthread&tid=114&fromuid=4
(出处: http://www.weicedu.com/)
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值