setjmp與sigsetjmp的區別

2021-07-30 22:25:47 字數 909 閱讀 2891

setjmp與sigsetjmp的作用我就不多描述了,這篇博文只是我的乙個隨筆,希望想弄清楚這2個函式的區別的童鞋做乙個參考,後面我會附帶乙個例子詳細說明一下,sigsetjmp的能夠儲存被阻塞的訊號而setjmp不會,我們通過下面的例子描述一下。

setjmp是否保留被阻塞的訊號

#include 

#include

#include

#include

#include

/** * 訊號處理函式

*/void sigdel(int signo)

int main(int argc, char *argv)

else

}sleep(8);//這期間 ctrl+\ 傳送sigquit

longjmp(buf, 1);

return0;}

//由於setjmp 不會保留被阻塞的訊號 所以輸出

"block signal not exist"

sigsetjmp是否保留被阻塞的訊號
#include 

#include

#include

#include

#include

/** * 訊號處理函式

*/void sigdel(int signo)

int main(int argc, char *argv)

else

}sleep(8);//這期間 ctrl+\ 傳送sigquit

siglongjmp(buf, 1);

return0;}

//由於sigsetjmp當第二個引數大於0的時候會保留被阻塞的訊號,等於0功能和setjmp一樣。所以以上**輸出

"block signal exist"

setjmp與longjmp 用法之一

有時候,當接收到乙個訊號時,希望能跳回程式中以前的乙個位置執行。例如,在有 的程式內,當使用者按了中斷鍵,則程式跳回到顯示主選單執行。我們可以用庫系統呼叫 setjmp 和longjmp 來完成這項工作。setjmp 能儲存程式中的當前位置 是通過儲存堆疊 環境實現的 longjmp 能把控制轉回到...

全面了解setjmp與longjmp的使用

2006 7 7 6 50 00 by 風吹雨點飄 另外請特別注意,setjmp函式與longjmp函式總是組合起來使用,它們是緊密相關的一對操作,只有將它們結合起來使用,才能達到程式控制流有效轉移的目的,才能按照程式設計師的預先設計的意圖,去實現對程式中可能出現的異常進行集中處理。與goto語句的...

全面了解setjmp與longjmp的使用

將對setjmp與longjmp的具體使用方法和適用的場合,進行乙個非常全面的闡述。另外請特別注意,setjmp函式與longjmp函式總是組合起來使用,它們是緊密相關的一對操作,只有將它們結合起來使用,才能達到程式控制流有效轉移的目的,才能按照程式設計師的預先設計的意圖,去實現對程式中可能出現的異...