UNIX信號及信號用途

信號是一種軟中斷,是一種處理異步事件的方法。一般來說,操作系統都支持許多信號。尤其是UNIX,比較重要應用程序一般都會處理信號。

UNIX定義了許多信號,比如SIGINT表示中斷字符信號,也就是Ctrl+C的信號,SIGBUS表示硬件故障的信號;SIGCHLD表示子進程狀態改變信號;SIGKILL表示終止程序運行的信號,等等。信號量編程是UNIX下非常重要的一種技術。

Unix信號量也可以在文件/usr/include/sys/signal.h中查看

#define SIGHUP  進程由於控制終端死去或者控制終端發出起命令 
#define SIGINT  鍵盤中斷所產生的信號 
#define SIGQUIT  鍵盤終止 
#define SIGILL  非法的指令 
#define SIGTRAP   進程遇到一個追蹤(trace)或者是一箇中斷嵌套 
#define SIGABRT  由abort系統調用所產生的中斷信號 
#define SIGIOT  類似於SIGABRT 
#define SIGBUS   進程試圖使用不合理的記憶體 
#define SIGFPE  浮點異常 
#define SIGKILL  KILL 
#define SIGUSR1  用戶自定義 
#define SIGSEGV  段錯誤 
#define SIGUSR2  用戶自定義 
#define SIGPIPE  管道操作時沒有讀只寫 
#define SIGALRM 由alarm系統調用產生的timer時鐘信號 
#define SIGTERM 收到終端信號的進程 
#define SIGSTKFLT 堆疊錯誤 
#define SIGCHLD  子進程向父進程發出的子進程已經stop或者終止的信號 
#define SIGCONT  繼續運行的信號 
#define SIGSTOP  stop 
#define SIGTSTP  鍵盤所產生的stop信號 
#define SIGTTIN   當運行在後狀態時卻需要讀取stdin的資料 
#define SIGTTOU   當運行在後狀態時卻需要寫向stdout 
#define SIGURG   socket的緊急情況 
#define SIGXCPU  進程超額使用CPU分配的時間 
#define SIGXFSZ  進程使用了超出系統規定文件長度的文件 
#define SIGVTALRM  內部的alarm時鐘過期 
#define SIGPROF  在一個程式段中描繪時鐘集過期 
#define SIGWINCH 終端視窗的改變 
#define SIGIO 非同步IO 
#define SIGPOLL  SIGIO pollable事件發生

通過結合trap命令使用:trap <command-list> <signal-list>

以上這些Unix信號量的知識,希望大家能夠記住,方便以後我們的使用。

發佈了44 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章