Linux进程等待

it2024-04-20  6

进程等待: 父进程等待子进程退出,获取子进程的退出返回值,释放退出的子进程资源,避免子进程成为僵尸进程。 僵尸进程:子进程先于父进程退出,但是父进程没有关注子进程的退出状态,子进程为了保存自己的退出状态,因此资源无法完全释放。 如何等待: *int wait(int status); 是一个阻塞接口,处理退出的子进程,若没有子进程退出,则会一直等待,直到有子进程退出才会调用返回; 阻塞:为了完成一个功能,发起一个调用,若不具备完成功能的条件,则调用一直等待; 非阻塞:为了完成一个功能,发起一个调用,若不具备完成功能的条件,则调用立即报错返回。 返回值:成功则返回处理的退出子进程的pid;失败则返回-1(比如没有子进程) *int waitpid(int pid,int staus;int option); 也是处理退出的子进程;但是与wait不同之处: 1.wait等待的是任意一个子进程的退出;waitpid可以等待指定的子进程,也可以等待任意一个子进程,通过第一个参数确定(第一个参数pid==-1则表示等待任意) 2.wait是一个阻塞接口(wait如果没有子进程退出,则会一直等待);waitpid可以默认阻塞,也可以设置为非阻塞,通过第三个参数确定(第三个参数option == 0表示默认阻塞;option==WNOHANG则表示非阻塞) 返回值:成功返回退出的子进程的pid大于0;若没有子进程退出返回0;若出错返回-1;

一个进程退出场景有两种:正常退出与异常退出 一个进程只有在正常退出的时候,返回值才是有意义的;若进程是异常退出,则返回值没有意义;

core dump–核心转储 当一个进程异常退出时,将退出前的程序运行信息保存下来(默认是关闭的) 默认是关闭的:程序中有很多敏感数据,有隐私泄露风险,保存运行数据需要占用磁盘空间。

最新回复(0)