当前位置: 首页 > news >正文

Linux 进程:辨析wait与waitpid

目录

    • 一、wait
    • 二、waitpid
      • (1)参数:pid
      • (2)参数:status
      • (3)参数:options
      • (4)返回值

  waitwaitpid 这两个函数的作用是:等待子进程退出,在子进程退出后释放子进程资源,防止子进程变成僵尸进程。但准确的说,它们的作用是:处理已经退出的子进程,并获取子进程的退出返回值

 来举个例子:如果wait或者waitpid函数是在程序运行的第10秒才会被执行到,但是在程序运行的第5秒就已经有子进程A退出了,你觉得当运行到wait或者waitpid函数的时候,会去处理子进程A吗?

 答案是会的,因为准确的说它们的功能就是:处理已经退出的子进程,并获取子进程的退出返回值。

一、wait

pid_t wait(int *status);

 作用:如果调用时还没有已经退出的子进程,那么将阻塞等待任意一个子进程退出

  • int *status:使用status参数作为输出参数获取子进程的退出返回值。

 返回值:如果成功处理退出的子进程就返回子进程的pid,失败返回-1。

 注意:因为这个函数是一种阻塞等待,当阻塞被打断时,意味着这个函数处理失败。

二、waitpid

pid_t waitpid(pid_t pid, int *status, int options);

 作用:处理退出的子进程,但根据操作选项options的不同,也会分为不同的情况。

(1)参数:pid

pid含义
-1等待任意一个子进程
子进程pid等待该子进程

 pid这个参数常用的两个选项:

  • -1:代表着等待任意一个子进程退出,然后进行处理。
  • 子进程pid:专门去等待这个pid对应的子进程退出,然后进行处理。

(2)参数:status

  • int *status:输出参数,用于向外界返回退出子进程的返回值。

(3)参数:options

options含义
WNOHANG如果运行这个函数时子进程没有退出,直接返回,不等待。

  我们常用的就是这个选项:WNOHANG,表示当这个函数运行时如果没有子进程已经退出,就直接返回,并不阻塞等待。

(4)返回值

  返回值共三种:

  • 如果成功处理了退出的子进程:返回子进程pid
  • 如果当前没有子进程退出:返回0
  • 如果处理出错:返回-1
http://www.lryc.cn/news/28356.html

相关文章:

  • 移除元素(每日一题)
  • 打印名片-课后程序(Python程序开发案例教程-黑马程序员编著-第一章-课后作业)
  • 为啥预编译SQL能够防止SQL注入
  • IGKBoard(imx6ull)-SPI接口编程-回环测试
  • Python基础学习10——类
  • 项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
  • SpringBoot 读取自定义Properties参数
  • 机器学习100天(三十七):037 朴素贝叶斯-挑个好西瓜!
  • c#遍历窗口,根据标题获取handle并显示窗口
  • MyBatis高频面试专题
  • 曹云金郭德纲关系迎曙光,新剧《猎黑行动》被德云社弟子齐点赞
  • 如何在 OpenEuler 系统中安装 Docker
  • MySQL日志管理
  • 进 制
  • pycharm关联github、新建以及更新仓
  • java基础知识之小碎片(自问自答版本)---嘻嘻,春招加油呀~
  • 蚁群算法c++
  • 北大青鸟天府校区IT学习大揭秘
  • 04 Linux errno.h错误码中文注释
  • MySQL表的约束
  • Go语言的条件控制语句及循环语句的学习笔记
  • D. Linguistics(思维 + 贪心)
  • maxWell数据迁移
  • 混合图像python旗舰版
  • 开发手册——一、编程规约_5.集合处理
  • 【elastic】elastic高可用集群部署
  • 初识Liunx下的进程状态和环境变量以及进程优先级
  • JavaEE——何为线程及创建线程
  • linux配置核查MySQL 配置规范 (Linux)_S3A3G3
  • Protobuf简介