信號(hào)在進(jìn)程間通信里面應(yīng)該是使用場(chǎng)景最多的一個(gè)。
平時(shí)我們?cè)诮K端里面用的 CTRL C 結(jié)束進(jìn)程或者CTRL Z 暫停進(jìn)程,都屬于信號(hào)的一種。
Linux里面信號(hào)有60多個(gè),分為標(biāo)準(zhǔn)信號(hào)和實(shí)時(shí)信號(hào),編號(hào)從1到31,34到64。不同的內(nèi)核版本略有區(qū)別。
發(fā)送信號(hào)一般用 kill 指令,比如啟動(dòng)一個(gè)進(jìn)程,先查到進(jìn)程的 ID 號(hào),然后使用 kill -2 加上進(jìn)程號(hào)就能結(jié)束進(jìn)程。其中,-2 表示 SIGINT 信號(hào),這個(gè)宏在 signal.h 頭文件里面有定義。使用這些信號(hào)的時(shí)候,既可以用宏定義,又可以用編號(hào)。
結(jié)束一個(gè)進(jìn)程,很多時(shí)候會(huì)選擇 kill -9 ,為什么選擇 9 這個(gè)信號(hào),因?yàn)檫@個(gè)信號(hào)比較特殊,所有進(jìn)程都不能忽略它。
kill不僅是命令,還是一個(gè)函數(shù),用法和命令差不多也是提供進(jìn)程號(hào),加上要發(fā)送的信號(hào)值,收到信號(hào)的進(jìn)程默認(rèn)動(dòng)作是結(jié)束。不過(guò)也可以通過(guò) signal 或者 sigaction 來(lái)指定處理方法,可以是忽略當(dāng)前信號(hào),也可以執(zhí)行指定的函數(shù)。
審核編輯:黃飛
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209518 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4331瀏覽量
62622 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
203瀏覽量
13961 -
實(shí)時(shí)信號(hào)
+關(guān)注
關(guān)注
0文章
4瀏覽量
5193
原文標(biāo)題:進(jìn)程間通信之信號(hào)
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論