Linux
如何在 Linux 中分解信號系統呼叫原型?
我正在閱讀“Linux 程式介面”,在那裡我找到了信號系統呼叫原型,如下所述:
#include <signal.h> void ( *signal(int sig, void (*handler)(int)) ) (int);
這裡的信號是函式指針還是簡單函式?
我想了解最後放置(int)的原因。
儘管返回類型為 void,但 signal() 為何會返回 SIGXXXX 的最後一次處理?
閱讀方式
void ( *signal(int sig, void (*handler)(int)) ) (int);
是它聲明了一個函式,
signal
,它作為參數
- 一個
int
- 和一個指向函式的指針,該函式本身接受一個
int
並且不返回任何內容並返回一個指向函式的指針,該函式接受一個
int
並且不返回任何內容。額外的括號對應於返回的函式指針。
Stack Overflow 上有詳細的解釋。不幸的是, cdecl.org不能處理這個聲明(因為
cdecl
也不能)。