Linux

如何在 Linux 中分解信號系統呼叫原型?

  • September 22, 2019

我正在閱讀“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也不能)。

引用自:https://unix.stackexchange.com/questions/542948