C語言signal ,列印停止時的資訊

2021-10-21 02:21:38 字數 1218 閱讀 7805

linux執行程式除了kill,無其他列印資訊,排查原因可以用signal()

signal.h 標頭檔案定義了乙個變數型別 sig_atomic_t兩個函式呼叫一些巨集來處理程式執行期間報告的不同訊號

signal.h 中定義的【變數型別】

sig_atomic_t 這是 int 型別,在訊號處理程式中作為變數使用。

它是乙個物件的整數型別,該物件可以作為乙個原子實體訪問,即使存在非同步訊號時,該物件可以作為乙個原子實體訪問。

sig_ 巨集與 signal 函式一起使用來定義訊號的功能

1 sig_dfl 預設的訊號處理程式。

2 sig_err 表示乙個訊號錯誤。

3 sig_ign 忽視訊號。

sig 巨集用於表示以下各種條件的信號碼:

1 sigabrt 程式異常終止。

2 sigfpe 算術運算出錯,如除數為 0 或溢位。

3 sigill 非法函式映象,如非法指令。

4 sigint 中斷訊號,如 ctrl-c。

5 sigse** 非法訪問儲存器,如訪問不存在的記憶體單元。

6 sigterm 傳送給本程式的終止請求訊號。

使用方法:

#include

void

sighandler

(int);

intmain()

void

sighandler

(int signum)

處理異常的方案:goto是本地的:它只能跳到所在函式內部的標號上,而不能將控制權轉移到所在程式的任意地點(當然,除非你的所有**都在main體中)。

為了解決這個限制,c函式庫提供了setjmp()和longjmp()函式,它們分別承擔非區域性標號和goto作用。標頭檔案申明了這些函式及同時所需的jmp_buf資料型別。

int

main

(int argc,

char

*ar**)

//或者if(

setjmp

(j)==0)

//setjmp初始化的時候為0

else //再次呼叫時不為0

*******************///

longjmp

(jmpbuf,1)

;//會跳到setjmp處

return0;

}

C語言中的signal函式

以下的訊號沒在posix.1中列出,而在susv2列出 sigbus 10,7,10 c 匯流排錯誤 錯誤的記憶體訪問 sigpoll a sys v定義的pollable事件,與sigio同義 sigprof 27,27,29 a profiling定時器到 sigsys 12,12 c 無效的系...

C 列印時如何隱藏列印視窗

最近在開發快件行包管理軟體,在介面上放了一堆文字框之類用於輸入的控制項,當使用者輸入乙個資料後按回車,自動跳到下一文字框,如果是最後乙個文字框,表示輸入完成,立即開始列印票據,為簡化使用者輸入,每個文字框通常都有預設值,因此,絕大部分情況下按一下回車就可以了,用熟練後通常只需修改少量資料,然後一路回...

c語言中signal函式詳細解釋說明

c語言中signal函式詳細解釋說明 對於 訊號處理函式 位於 中.void signal int sig,void handler int int 這個函式的宣告很是嚇人,一看就難弄懂.下面是解釋用法.一步一步解釋 int p 這是乙個函式指標,p所指向的函式是乙個不帶任何引數,並且返回值為int...