第六十三章、Linux進程間通信的方法——信號

在Linux中,進程間通信機制有多種,今天我們來介紹下其中一種:

信號

那麼信號一般是用來幹什麼的呢?

一般來說,信號主要用來通知進程異步事件的發生。在最初的時候,信號設計的目的是為了處理錯誤,同時它們也用來作為最基本的IPC機制,在Linux中可以識別64種不同的信號,這些信號中的大部分都有了預先定義好的意義,其中SIGUSR1和SIGUSR2可以由應用程序來定義。進程可以顯式的用kill或者killpg系統函數來向另一個進程或進程組發信號。

當一個信號正在被處理時,所有同樣的信號都將暫時擱置,直到這個信號處理完成。

在Linux系統中我們可以用kill -l來顯示系統中的信號:

第六十三章、Linux進程間通信的方法——信號

那麼進程接收到核心程序所發出的信號後,處置的方式有哪些呢?

1、 忽略這個信號;(進程可以忽略大部分信號,但是有兩個時不能忽略的a、SIGSTOP這個信號將中斷進程的執行;b、SIGKILL這個信號將強制進程退出。

2、 執行一個處理此信號的函數;

3、 暫停進程的執行;

4、 重新啟動剛才被暫停的那個進程;

5、 採用系統默認的操作,大部分信號的默認操作都是終止進程的執行。

有些信號除了會終止進程的執行,還會留下一個稱為core的文件,這個過程稱為內核轉儲,這個文件存有進程當時在內存中的內容,通常用於事後查錯。

上面我們使用kill -l查看了系統中預定義的信號,那麼下面我們來簡單介紹一些信號的意義:

第六十三章、Linux進程間通信的方法——信號

第六十三章、Linux進程間通信的方法——信號


分享到:


相關文章: