怎样实现一个进程的等待?

在这里插入图片描述

目录

概念

父进程等待子进程退出,从而获取子进程的返回值,释放其中的资源.
从而避免产生僵尸进程!

实现过程:

1.因为在我们上面讲过的子进程如果先进行退出的时候,父进程如果没有查询到,就会造成僵尸进程,
2.所以们可以利用进程的等待,让父进程不进行运行,
3.当子进程运行完已经退出的时候,我们在让父进程进行运行,4.这样就不会产生僵尸进程,能够实现进程等待的效果!

实现函数

对于进程等待的实现有两个具体的函数,可以让父进程等待子进程进行退出.

(1) pid_t wait (int *status)

1.等待任意一个子进程的退出,如果没有子进程退出,则阻塞一直等待
2.整型空间地址,获取退出子进程的返回值
3.返回值: 成功返回pid,失败返回-1
4.只要有子进程退出就进行处理,是在程序运行之前退出的也可以

在这里插入图片描述

(2) pid_t waitpid (pid_t childpid,int status ,int options)

1.可以等待任意一个进程的退出,也可以进行等待指定进程的退出
2.可以阻塞子进程的退出,也可以是非阻塞
在这里插入图片描述

关键字解释

child :-1 表示等待任意的子进程,大于0 表示指定子进程
status:用于获取退出子进程的返回值
options:0 默认阻塞等待 WNOHANG设置为非阻塞等待
返回值: -1错误 0无子进程 有子进程返回子进程的pid

进程等待两种转换方式

1.判断进程是否正常(相同)
status & 0x7f
WIFEXITED(status)

2.获取退出的实际返回值(相同)
(status>>8)&0xff
WEXITSTATUS(status)

这里主要介绍了进程等待的作用以及实现进程等待的两种函数,主要在于理解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值