所以,到目前为止,我已经多次使用了signal()函数,尽管我不知道这个函数的声明实际上是什么样的。我发现这个函数返回指向一个函数的指针:
void (*signal(int sig, void (*func)(int)))(int)
此指针指向前面的信号处理程序。好的,但是这是干什么用的?有人使用这个返回的指针吗?您能否描述一个此返回值有用的示例?
它是设置全局值的一般模式。由于设置了新值,将返回现在的旧值(在本例中为指向处理程序的指针)。
这允许更改是暂时的。因此,可以还原内置处理程序,而无需强制实现按名称向您公开该函数。
尽管在这种情况下,API 确实会公开一种通过SIG_DFL
宏设置默认值的方法。