Sigaction 与信号
Sigaction vs Signal
谁能解释一下sigaction和signal的区别。我知道它们的信号工作方式不同,具体取决于您正在使用的机器,即 Mac、Windows 或 Linux,并且 sigaction 在所有平台上的工作方式相同。但我的问题是为什么会这样,因为我尝试在不同的平台上使用信号并得到相同的结果。另外,你们会推荐使用哪一个来进行更好的练习。
我对 sigaction
和 signal
知之甚少。但我知道的是:
sigaction
调用比 signal
调用更复杂(如您所知)。
sigaction
允许您获得有关程序接收到的信号的更多信息(参见 siginfo_t
结构)。
- 根据 Michael KERRISK 的书:"The Linux Programming Interface"(第 22 章,第 456 页):“...最好始终使用
sigaction
而不是 signal
来建立信号处理程序。"
- 最后(同样来自 Michael KERRISK 的书):"The Linux kernel contains an implementation of
signal
as system call, this implementation provides the older, unreliable semantics. However, glibc
bypasses this system call by providing a signal library function that calls sigaction
"
希望对您有所帮助。
谁能解释一下sigaction和signal的区别。我知道它们的信号工作方式不同,具体取决于您正在使用的机器,即 Mac、Windows 或 Linux,并且 sigaction 在所有平台上的工作方式相同。但我的问题是为什么会这样,因为我尝试在不同的平台上使用信号并得到相同的结果。另外,你们会推荐使用哪一个来进行更好的练习。
我对 sigaction
和 signal
知之甚少。但我知道的是:
sigaction
调用比signal
调用更复杂(如您所知)。sigaction
允许您获得有关程序接收到的信号的更多信息(参见siginfo_t
结构)。- 根据 Michael KERRISK 的书:"The Linux Programming Interface"(第 22 章,第 456 页):“...最好始终使用
sigaction
而不是signal
来建立信号处理程序。" - 最后(同样来自 Michael KERRISK 的书):"The Linux kernel contains an implementation of
signal
as system call, this implementation provides the older, unreliable semantics. However,glibc
bypasses this system call by providing a signal library function that callssigaction
"
希望对您有所帮助。