乙個簡單的demo認識訊號

2021-10-22 04:05:36 字數 2707 閱讀 1588

#include

#include

void

signal_handler_fun

(int signum)

intmain

(int argc,

char

*ar**)

/*一:函式宣告

#include typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

二:函式引數

第乙個引數signum:指明了所要處理的訊號型別,它可以取除了sigkill和sigstop外的任何一種訊號。  

第二個引數handler:描述了與訊號關聯的動作,它可以取以下三種值:

sig_ign:示忽略該訊號。

sig_dfl:符號表示恢復對訊號的系統預設處理。不寫此處理函式預設也是執行系統預設操作。

三:注意

signal()會依引數signum 指定的訊號編號來設定該訊號的處理函式。

當指定的訊號到達時就會跳轉到引數handler指定的函式執行。

當乙個訊號的訊號處理函式執行時,如果程序又接收到了該訊號,

該訊號會自動被儲存而不會中斷訊號處理函式的執行,

直到訊號處理函式執行完畢再重新呼叫相應的處理函式。

但是如果在訊號處理函式執行時程序收到了其它型別的訊號,

該函式的執行就會被中斷。

四:返回值

返回先前的訊號處理函式指標,如果有錯誤則返回sig_err(-1)。

五:常用訊號

signal description

sigabrt 由呼叫abort函式產生,程序非正常退出

sigalrm 用alarm函式設定的timer超時或setitimer函式設定的interval timer超時

sigbus 某種特定的硬體異常,通常由記憶體訪問引起

sigcancel 由solaris thread library內部使用,通常不會使用

sigchld 程序terminate或stop的時候,sigchld會傳送給它的父程序。預設情況下該signal會被忽略

sigcont 當被stop的程序恢復執行的時候,自動傳送

sigemt 和實現相關的硬體異常

sigfpe 數學相關的異常,如被0除,浮點溢位,等等

sigfreeze solaris專用,hiberate或者suspended時候傳送

sighup 傳送給具有terminal的controlling process,當terminal 被disconnect時候傳送

sigill 非法指令異常

siginfo bsd signal。由status key產生,通常是ctrl+t。傳送給所有foreground group的程序

sigint 由interrupt key產生,通常是ctrl+c或者delete。傳送給所有foreground group的程序

sigio 非同步io事件

sigiot 實現相關的硬體異常,一般對應sigabrt

sigkill 無法處理和忽略。中止某個程序

siglwp 由solaris thread libray內部使用

sigpipe 在reader中止之後寫pipe的時候傳送

sigpoll 當某個事件傳送給pollable device的時候傳送

sigprof setitimer指定的profiling interval timer所產生

sigpwr 和系統相關。和ups相關。

sigquit 輸入quit key的時候(ctrl+\)傳送給所有foreground group的程序

sigse** 非法記憶體訪問

sigstkflt linux專用,數學協處理器的棧異常

sigstop 中止程序。無法處理和忽略。

sigsys 非法系統呼叫

sigterm 請求中止程序,kill命令預設傳送

sigthaw solaris專用,從suspend恢復時候傳送

sigtrap 實現相關的硬體異常。一般是除錯異常

sigtstp suspend key,一般是ctrl+z。傳送給所有foreground group的程序

sigttin 當background group的程序嘗試讀取terminal的時候傳送

sigttou 當background group的程序嘗試寫terminal的時候傳送

sigurg 當out-of-band data接收的時候可能傳送

sigusr1 使用者自定義signal 1

sigusr2 使用者自定義signal 2

si**talrm setitimer函式設定的virtual interval timer超時的時候

sigwaiting solaris thread library內部實現專用

sigwinch 當terminal的視窗大小改變的時候,傳送給foreground group的所有程序

sigxcpu 當cpu時間限制超時的時候

sigxfsz 程序超過檔案大小限制

sigxres solaris專用,程序超過資源限制的時候發 

ofbiz 乙個簡單的入門demo

我們要建立乙個簡單的helloworld例項來演示ofbiz的使用,預期結果是在瀏覽器上顯示helloworld 1 在hot deploy下建立helloworld子目錄 這裡面有很多檔案,可以從ofbiz自帶的模組中複製,然後修改部分配置即可 下面提供的圖是很多步驟之後最終的的結果,學習時最好按...

乙個簡單的異常處理demo

首先,1.自定義異常類 data public class lyexception extends runtimeexception通過列舉的方式建立異常資訊 getter noargsconstructor allargsconstructor public enum exceptinenums建...

乙個簡單的觸發器 Demo

背景 常見的表會有乙個updatedate欄位,用來標示表中資料最近一次被更新的時間 該功能可由程式實現 不再贅述 也可以由觸發器實現 use test go object trigger dbo autodatemodified script date 04 12 2010 17 37 43 se...