首页 > 解决方案 > 什么是现代版本的 signal() 系统调用?

问题描述

我想知道 signal() 系统调用的现代版本是什么。

标签: linuxunix

解决方案


那将是sigaction一种更灵活的信号处理方式。尽管设置起来要费些力气,但与旧signal方法相比,它具有明显的优势。

您只需查看第二个链接即可查看以下短语:

当一个信号出现,func指向一个函数时,实现定义是否……</p>

...如果信号处理程序引用除errno...以外的任何对象,则行为未定义。</p>

sigaction()功能提供了更全面、更可靠的信号控制机制;新应用程序应该使用sigaction()而不是signal().

这应该有望说服您使用更现代的变体。


推荐阅读