所以,到目前为止,我已经多次使用了signal()函数,虽然我还没有意识到实际上这个函数的声明是什么样的。 我发现这个函数返回一个函数指针:
void (*signal(int sig, void (*func)(int)))(int)
此指针指向前一个信号处理程序。 好的,但这是为了什么?有人使用这个返回的指针吗?你能描述一下这个返回值有用的例子吗?
答案 0 :(得分:3)
这是设置全局值的一般模式。由于设置了新值,返回现在的旧值(在这种情况下是指向处理程序的指针)。
这允许更改是临时的。因此,可以恢复内置处理程序,而不必强制实现通过名称向您公开该函数。
虽然在这种情况下,API 通过SIG_DFL
宏公开了一种设置默认值的方法。