如何分解Linux中的信号系统调用原型?

如何分解Linux中的信号系统调用原型?

我正在阅读“Linux 编程接口”,其中我找到了信号系统调用原型,如下所示:

#include <signal.h>
void ( *signal(int sig, void (*handler)(int)) ) (int);

这里的信号是什么,是函数指针还是简单函数?

我想了解放在最后(int)背后的原因。

尽管有 void 返回类型,为什么 signal() 仍返回 SIGXXXX 的最后一次配置?

答案1

阅读之道

void ( *signal(int sig, void (*handler)(int)) ) (int);

是它声明了一个函数 ,signal它接受作为参数

  • 一个int
  • 和一个指向函数的指针,该函数本身接受一个int并且不返回任何内容

并返回一个指向函数的指针,该函数接受 anint并且不返回任何内容。

额外的括号对应于返回的函数指针。

有详细的解释在堆栈溢出上。很遗憾cdecl.org对此声明不起作用(因为cdecl也不起作用)。

相关内容