C语言 信号() 函数返回的函数指针的目的是什么



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

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

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

它是设置全局值的一般模式。由于设置了新值,将返回现在的旧值(在本例中为指向处理程序的指针)。

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


尽管在这种情况下,API 确实会公开一种通过SIG_DFL宏设置默认值的方法。

最新更新