init signal解释
来源:互联网 发布:ie8.js文件下载 编辑:程序博客网 时间:2024/05/17 06:03
相关函数
sigaction()会依参数signum指定的信号编号来设置该信号的处理函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。
fcntl()用来操作文件描述符的一些特性。fcntl 不仅可以施加建议性锁,还可以施加强制锁。同时,fcntl还能对文件的某一记录进行上锁,也就是记录锁。
socketpair就可以创建全双工管道,man socketpair:
socketpair - create a pair of connected sockets, The two sockets are indistinguishable,也就是说,用socketpair创建出来的两个描述符应该是等价的。
waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用 wait()时子进程已经结束,则 wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数 status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数 status 可以设成 NULL。参数 pid 为欲等待的子进程识别码,
其他数值意义如下:
pid<-1 等待进程组识别码为 pid 绝对值的任何子进程。
pid=-1 等待任何子进程,相当于 wait()。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为 pid 的子进程。
参数 option 可以为 0 或下面的 OR 组合:
WNOHANG 如果没有任何已经结束的子进程则马上返回, 不予以等待。
WUNTRACED 如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。
僵尸进程产生和危害
在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放. 但这样就导致了问题,如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。
僵尸进程的避免
1、父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起。
2. 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler,因为子进程结束后, 父进程会收到该信号,可以在handler中调用wait回收。
3. 如果父进程不关心子进程什么时候结束,那么可以用signal(SIGCHLD, SIG_IGN) 通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收, 并不再给父进程发送信号。
4. 还有一些技巧,就是fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。不过子进程的回收 还要自己做。
- init signal解释
- 解释Linux init.d
- 解释Linux init.d
- 解释Linux init.d
- 解释Linux init.d
- init kill signal的数字总结
- SElinux init.rc 详细解释
- c语言中signal函数解释....
- 详细解释signal和sigaction以及SIG_BLOCK
- /system/core/init/readme.txt对init.rc的解释
- /system/core/init/readme.txt对init.rc的解释
- viewdidload viewload init 等简单解释
- c语言中signal函数详细解释说明
- c语言中signal函数详细解释说明
- signal
- signal
- Signal
- signal
- java程序员必知的8大排序
- kalman滤波的基础简介
- UE去掉bak备份文件
- 作为软件工程师,你必须知道的20个常识
- 浅谈矩阵分解在推荐系统中的应用
- init signal解释
- 西方处在通过舆论掺和中国内政最方便的时期
- 程序员成长的10个阶段--经典
- Python基本语法
- int main(int argc,char* argv[])讲解
- autotrace
- 欧盟峰会在即,市场交投清淡
- CSA(Credit Support Annex)
- 程序员成熟的几个标志