2014-10-27 25 views
0

我读过很多文章,其中建议使用sigaction代替signal有许多原因。但在阅读了一些开源代码(如Redis,Lua)后,我发现signal仍然存在。信号功能是否足够安全以忽略或恢复信号处理程序?

如果我只用signal忽略或恢复默认的处理程序,如:

signal(SIGPIPE, SIG_IGN); 

或:

signal(SIGPIPE, SIG_DFL); 

signal足够安全?

回答

1

man 2 signal在Linux上说:

唯一的便携使用信号的()是一个信号的配置设置为SIG_DFL或SIG_IGN。

所以,对于您所问的特定用途而言,没关系。不过,如果在您关心的平台上可用,似乎没有什么优势可以使用sigaction()

+0

也许这只适用于Linux。对? – 2014-10-27 07:25:22

+0

建议适用于任何平台,假设您希望您的代码也可以移植到Linux。 – 2014-10-27 07:32:35