signal函式原型一些不理解的地方

2022-01-01 08:00:04 字數 1442 閱讀 6806

1樓:胡糊虎

這問題不錯,我好好查了查。關鍵理解在於signal函式的函式值:函式指標,也即你定義的訊號處理函式。寫了個例子,以便理解:

#include

#include

#define sig_num 3

#define sig_0 0

#define sig_1 1

#define sig_2 2

typedef void (*sighandler)(int);

static sighandler sig[sig_num];

sighandler signal(int, sighandler); // == void (*signal(int, void(*)(int)))(int);

void mysighandler(int sig);

sighandler signal(int signum, sighandler sighandler)

return sig[signum];

}void mysighandler(int sig)int main()

return 0;}

2樓:寧靜致遠見卓識

你寫的signal函式返回型別是void *

3樓:徐忠震

打回。。。。。。。。

signal()函式,為什麼在任何地方都可以起作用?

4樓:匿名使用者

unix的signal機制就是這樣的,當一個程序收到訊號時,不管它處於什麼狀態,都是會被中斷,轉而去處理訊號。如果接收的訊號沒有被 忽略或設定處理函式,程序將退出。

5樓:

是通過程序間通訊,或者通過訊號量來實現的

關於訊號處理函式的引數問題!signal ???

6樓:

void (*handler)(int);

//函式指標,指標名為handler。

//指向一類這樣的函式:

函式返回值為void(無)

函式有一個入參,引數型別是int

呼叫的時候第二個引數直接寫上你的槽函式名字就可以了。

7樓:匿名使用者

那是signal返回值也是一個函式指標,所以就是這樣的形式,看起來是有點彆扭。你看看下面這種拆開的形式就容易理解了。

typedef void (*sigfunc)(int);

sigfunc signal(int signum, sigfunc func);

也就是signal函式需要有個函式指標為引數,同時也返回的是這個型別的函式指標,即該訊號之前的處理方式.

8樓:匿名使用者

這是一個函式指標吧

輸入的引數是int

您好,我這幾天看了佛經後有一些東西不理解像向您求教

眾生皆平等,智慧人人平等,不同的是 智慧顯現不同!體現在,神童和大器晚成的差異,三人行必有我師,無論你是否學佛,老師能夠起到答疑解惑的作用!供給和歌頌 禮下之人,必有所求,是不能否認的!家裡供佛,供果被誰吃了?歌頌,會升起歡喜心,誰在歡喜?如果你能有更好的解釋方法,我也願意學習!1 眾生皆平等,是指...

計算素數的這個函式不理解,求高手指教

for int i 單獨宣告一段靜態區域,i 則是靜態變數,正能在該區域裡使用 for int i 終止 如果在終止後還呼叫,那麼將會報,變數 i 未被宣告的錯誤 如果要在迴圈中終止後繼續使用i的值進行判斷,那麼需要 int i 這裡不同 for i 那麼for結束後你可以繼續取用i 樓主你的 中i...

一直不理解渦輪增壓風扇是渦輪嗎

你好!渦輪增壓器是安裝在發動機上的,跟前邊的風扇沒有什麼太大的關係。你好,渦輪增壓不是風扇是渦輪,意思是發動機近排進上有個渦輪增壓器,增壓器葉片靠發動機排氣推動同時也就帶動了進氣葉片,這樣就起到了增加進氣量的目的!你好,這款車的發動機和自然吸氣的發動機在效能上當然是不同啦!渦輪增壓發動機,跟自然吸氣...