进程等待

进程等待

  • 为什么要等待?

    1.子进程退出,如果父进程不管不顾,可能造成僵尸问题,造成内存泄漏

    2.一旦变成僵尸状态,kill -9都无能为力,因为没有谁可以杀死一个死去了的进程

    3.父进程需要知道子进程完成任务的情况(对错与否,有没有异常退出等)

    4.父进程需要通过进程等待的方式回收子进程的资源,获取退出信息

  • 怎么等待?(两个接口函数)

    wait系统调用

    
    #include<sys/types.h>
    
    
    #include<sys/wait.h>
    
    pid_t wait(int* status)

    参数:status输出型参数,整型指针,指向的空间存放的是子进程退出的状态,获取子进程状态,不关心可以设置为NULL

    返回值:pid_t类型,如果返回值大于0,说明等待成功,返回的是子进程的ID,可以通过status查看子进程的退出状态;如果返回值等于-1,则说明等待失败(可能wait的进程本身没有子进程)

    该方式为阻塞式等待,父进程什么都不做在等待子进程退出,如果没有子进程退出,父进程会一直等;如果父进程收到SIGCHLD信号,该函数就会立马返回立马清理。

    waitpid系统调用

    
    #include<sys/types.h>
    
    
    #include<sys/wait.h>
    
    pid_t waitpid(pid_t pid, int* status, int options)

    参数:pid表示要等待的是哪个进程,status仍然是个输出型参数,存放子进程的退出码,options是一个选项,如果options设置为0,那么这个函数就是阻塞式等待,如果设置为WNOHANG,则函数为非阻塞式等待(发现已经没有退出的子进程可以收集)

    返回值:返回值大于0,等待成功,返回子进程的id,返回值等于0,表示发现等待的子进程没有退出,返回值等于-1,调用失败

    如果参数pid设置为-1,则表示等待任意子进程,和wait等效

    wait和waitpid的区别?

    1. wait是阻塞式等待,waitpid可自行选择(options为0阻塞,options为WNOHANG为非阻塞)

    2. wait等待的是任意子进程(等到谁就是谁),waitpid等待的是参数pid传进来的确定子进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux中的进程等待(Process Waiting)是指一个进程在执行时需要等待某些条件满足后才能继续执行的情况。 在Linux中,进程等待通常有以下几种情况: 1. I/O等待:当一个进程需要进行输入输出操作时,比如读写文件或者网络通信,由于这些操作是相对慢速的,进程需要等待数据的读取或写入完成才能继续执行。 2. 锁等待:多个进程访问临界资源时,为了避免竞态条件,需要使用锁来实现同步。当一个进程试图获取已经被其他进程占用的锁时,它会被阻塞,并等待锁被释放。 3. 睡眠等待:当一个进程调用了sleep()或wait()等系统调用后,它会主动释放CPU资源,并进入睡眠状态等待指定的时间或者某个事件发生后才会被唤醒。 4. 信号等待:当一个进程正在等待某个信号的到来时,它会进入阻塞状态,直到该信号被发送给该进程进程才会被唤醒并继续执行。 针对进程等待的情况,Linux提供了一些机制来管理这些等待进程,比如使用信号量、条件变量、管道等方式来实现进程间的同步与通信。此外,Linux还提供了一些工具和命令来查看进程等待状态,比如top命令可以查看每个进程等待时间,ps命令可以查看进程状态等。 总之,Linux中的进程等待是一个重要的概念,合理管理进程等待可以提高系统的性能和资源利用率。进程等待是多任务操作系统中的常见现象,对于了解和掌握Linux进程管理至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_长风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值