c - signal() 函数返回的函数指针的用途是什么?

标签 c pointers signals

所以,到目前为止,我已经多次使用 signal() 函数,尽管我还没有意识到这个函数的声明实际上是什么样的。 我发现这个函数返回指向一个函数的指针:

void (*signal(int sig, void (*func)(int)))(int)

并且这个指针指向前一个信号处理程序。 好的,但是这是干嘛的?有人使用这个返回的指针吗?您能否描述一个此返回值有用的示例?

最佳答案

这是设置全局值的通用模式。作为设置新值的结果,返回现在的旧值(在本例中是指向处理程序的指针)。

这允许更改是临时的。因此,可以恢复内置处理程序,而无需强制实现按名称向您公开该函数。


尽管在这种情况下,API 确实为您提供了一种通过 SIG_DFL 宏设置默认值的方法。

关于c - signal() 函数返回的函数指针的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566983/

相关文章:

c++ - 无法为非 root 用户加载 libsctp.so

c - 1.#QNANO在C语言输出中?

c - strcmp强制cmd错误

C编程。指向结构的指针

c - SA_ONSTACK在sigaction中有什么用?

c++ - 如果我使用相同的消息和相同的段落,为什么 wparam 会改变?

c - 不同的指针是否被认为是不同的数据类型?

c - C中数组、指针和字符串的区别

c - 进程何时会发出导致自身退出的信号?

python - Pyqt5 QtableWidget 和集成组合框在组合框项目更改时无法调用函数