signal()函数返回的函数指针的目的是什么?

时间:2017-01-10 10:48:45

标签: c pointers signals

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

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

此指针指向前一个信号处理程序。 好的,但这是为了什么?有人使用这个返回的指针吗?你能描述一下这个返回值有用的例子吗?

1 个答案:

答案 0 :(得分:3)

这是设置全局值的一般模式。由于设置了新值,返回现在的旧值(在这种情况下是指向处理程序的指针)。

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

虽然在这种情况下,API 通过SIG_DFL宏公开了一种设置默认值的方法。