Linux wait()/waitpid()

news/2024/10/18 12:26:20/

这里写目录标题

  • wait()
  • waitpid()

wait()

使用wait()函数与waitpid()函数让父进程回收子进程的系统资源,两个函数的功能大致类似,waitpid()函数的功能要比wait()函数的功能更多。

所需头文件:
#include<sys/types.h>
#include<sys/wait.h>函数原型:
pid_t wait(int *status)函数参数:
status    保存子进程结束时的状态(由exit();返回的值)。使用地址传递,父进程获得该变量。若无需获得状态,则参数设置为NULL返回值:
成功:已回收的子进程的PID
失败:-1

当进程结束时,该进程会向它的父进程报告。wait()函数用于使父进程阻塞,直到父进程接收到一个它的子进程已经结束的信号为止。如果该进程没有子进程或所有子进程都已结束,则wait()函数会立即返回-1。

waitpid()

所需头文件:
#include<sys/types.h>
#include<sys/wait.h>函数原型:
pid_t waitpid(pid_t pid, int *status, int options)函数参数:
pid
pid>0    回收PID等于参数pid的子进程
pid==-1    回收任何一个子进程。此时同wait()
pid==0    回收其组ID等于调用进程的组ID的任一子进程
pid<-1    回收其组ID等于pid的绝对值的任一子进程status
同wait()options    0:同wait(),此时父进程会阻塞等待子进程退出
WNOHANG:若指定的进程未结束,则立即返回0(不会等待子进程结束)返回值:
>0        已经结束运行的子进程号
0        使用WNOHANG选项且子进程未退出
-1        错误

waitpid()函数的功能与wait()函数一样,不过waitpid()函数有若干选项,所以功能也比wait()函数更加强大。实际上,wait()函数只是waitpid()函数的一个特例而已,Linux内核总是调用waitpid()函数完成相应的功能。

wait(NULL)等价于waitpid(-1,NULL,0)。


http://www.ppmy.cn/news/590580.html

相关文章

Meteor.call Wrapper

问题&#xff1a;在Meteor开发时&#xff0c;添加一个Loading的功能&#xff08;即使运行Meteor.call显示和隐藏loading overlay&#xff09;在Meteor.call的生命周期上。 不多解释&#xff0c;直接上代码。本人刚入门不久&#xff0c;可能这个方案比较土&#xff0c;不过在有…

Please, don't hate me

Please, dont hate me Please, dont hate me Please, dont hate me Please, dont hate me Please, dont hate me Please, dont hate me Please, dont hate me

warning: push.default is unset错误提示

1 错误还原&#xff1a; 在执行 git push 时看到如下消息: warning: push.default is unset; its implicit value is changing in Git 2.0 from matching to simple. To squelch this message and maintain the current behavior after the default changes, use: git c…

wait()/notify()的使用

wait()/notify() 通常&#xff0c;多线程之间需要协调工作。例如&#xff0c;浏览器的一个显示图片的线程displayThread想要执行显示图片的任务&#xff0c;必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完&#xff0c;displayThread可以暂停&#xff0…

【wait和notify】

文章目录 前言一、wait() 方法1.wait 做的事情:2.代码实现3.wait结束等待的条件 二、notify() 方法1.notify 方法是唤醒等待的线程2.代码演示 三、notifyAll() 方法1代码演示&#xff1a;2.理解 notify 和 notifyAl 四、wait与sleep区别 前言 由于线程之间是抢占式执行的, 因此…

英雄连2一直显示连接relic服务器,英雄连2联机时出现PleaseWait问题的解决方法_英雄连2PleaseWait问题的解决方法_牛游戏网...

联机时出现PleaseWait问题的解决方法&#xff1a; 1. 将Steam和COH2完全关闭 2. 找到Steam文件夹&#xff0c; 找到steam.exe执行文件&#xff0c;在其属性中&#xff0c;选择”兼容性“&#xff0c;取消掉所有打钩的项目&#xff0c;然后单击”更改所有用户的设置“&#xff0…

wait 和 notify

由于线程之间是抢占式执行的&#xff0c;因此线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序 wait( )方法 wait 方法做的事 使当前执行代码的线程进行等待&#xff0c;(把线程放到等待队列中)释放当前的锁满足一定条件…

Welcome ! Please leave word here!

Welcome ! Please leave word here if you have any ideas or proposes.Thank you!