linux进程间通信之信号
2024-10-16 16:56:02
1、wait()函数
原型:pid_t wait(int *status)
子进程退出时,它向父进程发送一个SIGCHLD信号,默认情况是总是忽略SIGCHLD信号,此时进程状态一直保留在内存中,因此需要父进程去处理改信号,处理的办法则是调用wait()函数,收集子进程状态信息,并清空该信息;
使用wait()来等待子进程终止运行称为回收进程;
当父进程忘了用wait()函数等待已终止的子进程时,子进程就会进入一种无父进程的状态,此时子进程就是僵尸进程.wait()要与fork()配套出现,如果在使用fork()之前调用wait(),wait()的返回值则为-1,正常情况下wait()的返回值为子进程的PID.
如果先终止父进程,子进程将继续正常进行,只是它将由init进程(PID 1)继承,当子进程终止时,init进程捕获这个状态;
僵尸进程产生场景:父进程后于子进程退出,并且父进程中没有使用wait()处理子进程的信号;
最新文章
- C#连接Access数据库(详解)
- poj 2104 K-th Number (划分树入门 或者 主席树入门)
- 关于iframe的滚动条,如何去掉水平滚动条或垂直滚动条
- Activity not started, its current task has been brought to the front
- HDU5934 Bomb(2016杭州CCPC第二题)(强连通缩点)
- 课堂所讲整理:包装&;工具类
- C++11智能指针
- 什么是jetty
- sqlserver存储过程及易错点
- java系列--MD5加密
- EL表达式 与 servlvet3.0的新规范
- 面试挂在了 LRU 缓存算法设计上
- dbutils工具类使用
- mysql 小数转换成百分数查出(保留两位小数百分数)
- mac 使用笔记日志
- 更换Ubuntu源为国内源的操作记录
- https和server-status配置案例
- nginx的日志切割
- 不错网络性能相关的文章-BaiduRPC
- erase操作