Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 信号函数是否足够安全,可以忽略或恢复信号处理程序?_C_Linux_Unix_Signals - Fatal编程技术网

C 信号函数是否足够安全,可以忽略或恢复信号处理程序?

C 信号函数是否足够安全,可以忽略或恢复信号处理程序?,c,linux,unix,signals,C,Linux,Unix,Signals,我读过许多文章,出于许多原因,它们建议使用sigaction替换signal。但是在阅读了一些开源代码(例如Redis,Lua)之后,我发现信号仍然存在 如果我只使用信号忽略或恢复默认处理程序,例如: signal(SIGPIPE, SIG_IGN); 或: signal足够安全吗?man 2 signal在Linux上说: signal()的唯一可移植用途是将信号的配置设置为SIG_DFL或SIG_IGN 因此,是的,对于您所询问的特定用途,它是可以的。不过,如果在您关心的平台上可以使用si

我读过许多文章,出于许多原因,它们建议使用
sigaction
替换
signal
。但是在阅读了一些开源代码(例如
Redis
Lua
)之后,我发现
信号仍然存在

如果我只使用
信号
忽略或恢复默认处理程序,例如:

signal(SIGPIPE, SIG_IGN);
或:


signal
足够安全吗?

man 2 signal
在Linux上说:

signal()的唯一可移植用途是将信号的配置设置为SIG_DFL或SIG_IGN


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

也许这只适用于Linux。对吗?这个建议适用于任何平台,假设您希望您的代码也可以移植到Linux。
signal(SIGPIPE, SIG_DFL);