Unix訊號
維基百科,自由的 encyclopedia
在電腦科學中,訊號(英語:Signals)是Unix、類Unix以及其他POSIX相容的作業系統中行程間通訊的一種有限制的方式。它是一種非同步的通知機制,用來提醒程序一個事件已經發生。當一個訊號傳送給一個程序,作業系統中斷了程序正常的控制流程,此時,任何非原子操作都將被中斷。如果程序定義了訊號的處理常式,那麼它將被執行,否則就執行預設的處理常式。
![]() |
訊號類似於中斷,不同之處在於中斷由處理器調解並由內核處理,而訊號由內核調解(可能透過系統呼叫)並由程序處理。內核可以將中斷作為訊號傳遞給導致中斷的程序(典型的例子有SIGSEGV、SIGBUS、SIGILL和SIGFPE)。
訊號起源於20世紀70年代的貝爾實驗室Unix,最近在POSIX標準中有所規定。
嵌入式程序可能會發現訊號對於行程間通訊很有用,因為訊號的計算和內存佔用很小。