【发布时间】:2014-10-27 07:20:10
【问题描述】:
我读过很多文章建议使用sigaction 替换signal,原因有很多。但是看了一些开源代码(如Redis、Lua),发现signal还是存在的。
如果我只使用signal来忽略或恢复默认处理程序,如:
signal(SIGPIPE, SIG_IGN);
或:
signal(SIGPIPE, SIG_DFL);
signal 足够安全吗?
【问题讨论】:
我读过很多文章建议使用sigaction 替换signal,原因有很多。但是看了一些开源代码(如Redis、Lua),发现signal还是存在的。
如果我只使用signal来忽略或恢复默认处理程序,如:
signal(SIGPIPE, SIG_IGN);
或:
signal(SIGPIPE, SIG_DFL);
signal 足够安全吗?
【问题讨论】:
man 2 signal 在 Linux 上说:
signal() 的唯一可移植用途是将信号的处置设置为 SIG_DFL 或 SIG_IGN。
所以是的,对于您询问的特定用途,没关系。不过,如果在您关心的平台上提供 sigaction(),似乎没有什么优势。
【讨论】: