進程可以通過系統(tǒng)調(diào)用kill函數(shù)向包括它本身在內(nèi)的其他進程發(fā)送一個信號。如果程序沒有發(fā)送該信號的權(quán)限,對kill函數(shù)的調(diào)用就將失敗,失敗的常見原因是目標(biāo)進程由另一個用戶所擁有。這個函數(shù)和shell命令完成相同的功能。
發(fā)送信號的kill函數(shù)的操作實際上是系統(tǒng)調(diào)用。
語法形式:
kill函數(shù)把參數(shù)sig給定的信號發(fā)送給由參數(shù)pid給出的進程號所指定的進程,成功時它返回0,失敗則返回-1。
【例】現(xiàn)在有一個程序main01.c的代碼如下圖所示,執(zhí)行這個程序,然后在另一個進程中給這個正在執(zhí)行的程序發(fā)送信號。
(1)現(xiàn)在有這樣一個程序main01,編譯并執(zhí)行這個程序,此時會一直輸出"hello"。main01.c具體代碼如下:
(2)另外一個程序mykill.c如下,該程序用來發(fā)送信號:
先在一個終端中編譯并執(zhí)行第一個程序main01,這時會一直輸出"hello":
然后再另一個終端中查看進程main01的pid,然后編譯并執(zhí)行第二個程序mykill:
main01的pid為11241:
編譯并執(zhí)行第二個程序mykill,執(zhí)行mykill的時候順便傳參,傳參的內(nèi)容就是將信號發(fā)送給pid為多少的進程和要發(fā)送的信號的代號,在這里假設(shè)要給main01發(fā)送SIGINT信號,SIGINT信號為2:
【注意】
(1)以代號為15的信號結(jié)束一個進程:
(1)代號為9的信號殺死進程
(2)以kill -9命令殺死這個進程:
代號為9(kill -9)的信號是為了防止出現(xiàn)一個無論怎樣都結(jié)束不掉的進程出現(xiàn),所以不允許改變它的響應(yīng)方式。
因篇幅問題不能全部顯示,請點此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)