Linux下強制中斷一個程序的執(zhí)行使用鍵盤按鍵可以有多種方法。
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設服務10余年為成都成都圍欄護欄小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站制作營銷網(wǎng)站建設商城網(wǎng)站建設手機網(wǎng)站建設小程序網(wǎng)站建設網(wǎng)站改版,從內(nèi)容策劃、視覺設計、底層架構、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設服務。
1、CTRL+C鍵,這相當于發(fā)送Terminal信息到當前的程序。比如下圖,在通過find命令查找名稱帶3b76的文件,可以直接按ctrl+c鍵結束掉循環(huán)。
2、CTRL+Z鍵,這是暫停鍵,暫停程序執(zhí)行??梢栽偻ㄟ^fg命令返回重新運行被暫停的程序。比如下圖,在mysql中執(zhí)行命令,這時候希望查詢一下當前目錄下的文件,就可以按CTRL+Z,然后執(zhí)行完ls命令后,再執(zhí)行fg命令即可回到mysql中。
3、CTRL+D鍵,發(fā)送exit信號,退出程序,比CTRL+C要溫柔一些,比如下圖,退出phython3.5就可以按CTRL+D鍵。
具體操作步驟如下:
1、首先打開linux終端,運行一段Python程序:
2、然后在程序運行中,需要終止程序運行時,按下快捷鍵crtl+c就可以終止指令程序,此時運行的這段python程序就被終止了。所有的指令都可以用這個快捷鍵終止運行:
3、最后再次運行一下剛才的程序,這里直接使用Ctrl+ Z快捷鍵終止運行程序是可以達到同樣的效果的:
1、首先,連接相應linux主機,進入到linux命令行狀態(tài)下,等待輸入shell指令。
2、其次,以終止進程號1984的nginx子進程為例,在linux命令行中輸入:kill -9 1984。
3、最后,按下回車鍵執(zhí)行shell指令,此時會看到進程號1984的nginx子進程被成功終止了。
本文基于 RockPI 4A 單板Linux4.4內(nèi)核介紹中斷申請的常用接口函數(shù)。
1、文件
2、定義
說明:
1)、 irq :要申請的中斷號,可通過 platform_get_irq() 獲取,見“Linux內(nèi)核中斷之獲取中斷號”。
2)、 handler :中斷處理函數(shù),發(fā)生中斷時,先處理中斷處理函數(shù),然后返回 IRQ_WAKE_THREAD 喚醒中斷處理線程。中斷處理函數(shù)盡可能簡單。
中斷處理函數(shù)定義: typedef irqreturn_t (*irq_handler_t)(int, void *);
中斷返回值如下:
3)、 thread_fn :中斷處理線程,該參數(shù)可為NULL。類似于中斷處理函數(shù)的下半部分。
4)、 irqflags :中斷類型標志。
定義文件: include/linux/interrupt.h ,內(nèi)容如下:
5)、 devname :中斷名稱,可使用 cat /proc/interrupts 命令查看。
6)、 dev_id :設備ID,該值唯一。
在使用共享中斷時(即設置 IRQF_SHARED ),必須傳入 dev_id ,在中斷處理和釋放函數(shù)中都會使用該參數(shù)。
注:
1、 request_threaded_irq() 函數(shù)可替代 request_irq 加 tasklet 或 workqueue 的方式。
2、對應的中斷釋放函數(shù)為: void free_irq(unsigned int, void *) ,需要和中斷申請函數(shù)成對出現(xiàn)。
1、文件
2、定義
說明:
1)、 __must_check :指調(diào)用函數(shù)一定要處理函數(shù)的返回值,否則編譯器會給出警告。
2)、 request_irq() 函數(shù)本質(zhì)上是中斷處理線程 thread_fn 為空的 request_threaded_irq() 函數(shù)。
注 :
對應的中斷釋放函數(shù)為: void free_irq(unsigned int, void *) ,需要和中斷申請函數(shù)成對出現(xiàn)。
1、文件
2、定義
說明 :
devm_request_threaded_irq() 本質(zhì)上還是使用 request_threaded_irq() 函數(shù)實現(xiàn)中斷申請。
兩者區(qū)別:
1)多了一個 dev 參數(shù);
2)在設備驅(qū)動卸載時,中斷會自動釋放;
3)如果想單獨釋放中斷,可使用 void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id) 函數(shù)。
1、文件
2、定義
devm_request_irq() 函數(shù)本質(zhì)上是中斷處理線程 thread_fn 為空的 devm_request_threaded_irq() 函數(shù)。
1、獲取中斷號
2、申請中斷
3、中斷處理函數(shù)
4、中斷處理線程
5、查看中斷