信号的返回值

时间:2014-04-15 07:14:54

标签: c signals

我正在阅读有关信号功能的内容,定义是:
void (*signal(int sig, void (*func)(int)))(int); 并且返回值是:

If the request can be honored, signal() shall return the value of func for the most recent call to signal() for the specified signal sig. Otherwise, SIG_ERR shall be returned and a positive value shall be stored in errno.

怀疑是:是不是信号无效功能?它应该什么都不返回?

1 个答案:

答案 0 :(得分:1)

实际的信号处理程序函数是一个返回void的函数。安装新信号句柄的函数signal返回先前的信号处理函数指针。

声明函数返回函数指针的语法非常复杂,难以破译(你真的必须跟踪所有这些括号)。如果有一个typedef会更容易,就像在Linux中完成的那样(来自the Linux signal manual page):

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

另请注意,signal函数被视为已弃用,而有利于sigaction