unix - 前叉信号

标签 unix fork signals

什么是前叉中的信号行为。
是否应该在fork中继承所有信号?

最佳答案

至少在Linux下,信号处理程序本身是继承的,而不是未决的信号。

引用Linux fork(2) man page:

fork() creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inherited.



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

尽管没有直接关系,但是通常在exec()之后的fork()类型调用将破坏所有信号处理程序,因为将全新的可执行文件加载到进程中(覆盖当前为信号提供服务的函数)。

关于unix - 前叉信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227373/

相关文章:

linux - Bash-Command 获取当前网络带宽使用率和CPU使用率

两个子进程之间的 Python 管道输出

c - 如何正确退出子进程?

python - 将自主游戏模型与基于 Qt 的 UI 连接起来

具有不同参数的 C++ boost 信号和插槽?

c - 在 MinGW/MSYS2 上编译 XZ Utils 时的未知类型

c++ - argc从哪里来?

linux - 在svn中提交文件后如何删除关于存储未加密密码的警告

c - 使用 fork() 的二叉进程树

unix - 为什么使用 `clone` 创建进程会导致内存不足故障?