c - 为什么我们通常忽略SIGCHLD

标签 c signals sigchld

我正在研究信号并浏览此链接

https://en.wikipedia.org/wiki/Child_process#cite_note-1

这就是它所说的:“当子进程退出、被中断或被中断后恢复时,SIGCHLD 信号被发送到子进程的父进程。默认情况下,信号被简单地忽略”

我们忽略 SIGCHLD 有什么原因吗?

最佳答案

尝试生 child ,您就会明白为什么有时您必须忽略 SIGCHLD 来保持理智 :)。

撇开玩笑不谈,该声明的全部意思是 POSIX 系统没有为 SIGCHLD 定义默认信号行为,除了忽略它之外。将此与 SIGINTSIGTERM 等进行比较,其中默认行为可能是终止进程。

有关所有信号、所有默认处理程序以及信号->默认处理程序的映射的列表,请参阅 linux 上的 man 7 signal

通常忽略 SIGCHLD 是有意义的,因为您可以从 waitpid 知道您需要知道的一切。

关于c - 为什么我们通常忽略SIGCHLD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32631733/

相关文章:

使用指针打印字母表的 C 函数

android - 使用 Android.mk 加载共享库

C GTK+ 启动时的事件信号

Perl,没有子进程 w/"open"

c - popen 函数调用后 sleep 在子进程中不起作用

c - C 中的隐式数据类型转换

c - 使用 gethostbyname 函数

c - linux c 编程中的信号

c - 用信号处理通信

c - 哪个子进程发送SIGCHLD