叉子里的信号

Cra*_*zyC 5 unix fork signals

fork中的信号行为是什么.是否所有信号都在fork中继承如果不是那么哪一个为什么?

pax*_*blo 15

至少在Linux下,信号处理程序本身是继承的,但不是挂起的信号.

引用Linux fork(2) 手册页:

fork()创建一个子进程,该进程仅在其PID和PPID中与父进程不同,并且资源利用率设置为0.事实上,不继承文件锁和挂起信号.

这是有道理的,因为信号属于(父)过程.新创建的进程(大部分)是当前进程的副本,因此保留了信号处理程序.

虽然没有直接相关,但是exec()经常跟随a 的-type调用fork() 破坏所有信号处理程序,因为正在将全新的可执行文件加载到进程中(覆盖当前正在处理信号的函数).