【Linux】模拟实现进程等待(避免僵尸进程)

僵尸进程会很大程度上加速我们资源的泄漏,非常不好,所以也有一系列解决办法。

链接: 僵尸进程.

一般情况下我们利用2个提供的库函数来实现进程等待。

wait函数

pid_t wait (int* status);

详细解读:

1 .pid_t就是一种有符号整形,用来记录进程的pid的,函数的返回值有三种1.(负1)-1->运行错误。2.0->没有子进程退出。3.返回退出的子进程pid。

2 . status是一种输出型参数,有操作系统给出,记录子进程退出的状态信息。当这个参数为NULL,表示父进程不关心子进程的退出状态。

waitpid函数

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

解读:

1.返回值和wait相同。

2.第一个参数时用来指定子进程的pid的,若为-1,表示任意一个子进程的退出。

3.输出型参数和wait作用相同。

4.options=0:阻塞等待
options=WNOHANG:非阻塞状态
注意:只有非阻塞状态status才能返回0
;(阻塞状态会一直等子进程的退出,哪怕没有也会等)

模拟实现进程等待:

利用waitpid实现:
waitpid(-1,&status,0)==wait(&status)
这两种写法是等价的
在这里插入图片描述
程序运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhaocx111222333/article/details/115026426