郑州专业建网站,营销型网站设计方针,校园二手物品交易网站怎么做,校园文化设计公司 案例僵尸进程(Z状态)无法被kill指令杀死#xff0c;通过进程等待杀掉它#xff0c;解决内存泄漏问题#xff08;进程处于僵尸态#xff0c;仍然维护pcb结构体来解决问题#xff09;
通过进程等待#xff0c;获得进程退出情况
wait回收僵尸态进程 我们可以看到进程由五秒后子…僵尸进程(Z状态)无法被kill指令杀死通过进程等待杀掉它解决内存泄漏问题进程处于僵尸态仍然维护pcb结构体来解决问题
通过进程等待获得进程退出情况
wait回收僵尸态进程 我们可以看到进程由五秒后子进程从僵尸态销毁wait可以杀掉僵尸态的进程
wait每次只能回收一个僵尸进程
循环等待回收多个僵尸态进程 阻塞等待
如果子进程不是僵尸态父进程在调用wait()时会进入阻塞状态等待子进程结束这是软件的阻塞状态等待外设输入属于硬件的阻塞状态。
waitpid() wait的int* status获取子进程退出信息
status作为输出型参数相当于传入一个空间进程结束后把子进程的信息放入status指向的空间
status保存的内容 //00000000 00000000 00000000 00000000
(只看后16位)
00000000 //前8位退出码
0 // 第8位 core dump
0000000//1到7位 终止信号
信号码表示进程是否正常终止退出码表示进程结束后退出信息(return 0,exit(0) 0为退出码)
有信号码表示进程因为除0或者野指针等错误不能正常终止。被操作系统干掉。 非阻塞轮询父进程多次访问子进程结束状态
pid_t waitpid(pid_t pid,int *status,int options)
options默认是0默认情况下是阻塞方式父进程会一直等待子进程直到进程运行完。
当options的值是WNOHANG时父进程不会阻塞可以继续向下运行其他代码。
非阻塞轮询就是父进程不阻塞下在循环下多次间隔访问
waitpid的返回值大于0等待正常返回值小于0等待失败等待的进程不是父进程的子进程时等于0函数运行正常但还没确定结果。