如果C或者shell程式禁止了CTRL+C訊號,那麼在終端按CTRL+C按鍵組合將不能終止程式,此時要在終端終止這個程式只能按CTRL+\按鍵組合,在預設情況下它產生SIGQUIT訊號.
很多剛從windows轉移到linux上來工作的同事,在用vim編輯程式時,常常會習慣性的按下Ctrl s儲存檔案內容。殊不知,這一按不緊,整個終端再也不響應了。
事實上Ctrl s在終端下是有特殊用途的,那就是暫停該終端,這個功能是否有什麼實際用途,目前沒有用到過,還不清楚。要退出這種狀態,讓終端繼續運行,很簡單,按下Ctrl q就行了。
想當年,剛開始用linux時,不小心按下Ctrl s,不知道怎麼處理,只好重起電腦。
下面隨便提一下其它幾個特殊按鍵:
Ctrl c 中止當前正在執行的程式。
Ctrl d 相當於exit命令,退出當前會話。
Ctrl z 將當前啟動並執行程式放到後台運行。與運行時加 & 類似。
Tab 鍵 自動補全命令。
在bash指令碼裡,可以通過trap命令來禁止響應一些訊號以達到屏蔽上面一些按鍵功能。
===================================================================
用shell和c寫程式都能做到禁止ctrl-c
shell呢就是 trap "" 2
c呢就是用一個字元來代替ctrl-c的功能!!代碼如下:
#include
#include
#include
main()
{
int termino buf;
ioctl(0,TCGETA,&buf);
buf.c_cc[VINTR]="*" /*這句就用“*”代替ctrl-c
ioctl(0,TCSETA,&buf);
exit(0);
}
進程不響應,可以
1:
ps
找到不響應的程式的pid,用kill -9 pid(或kill -9 程式名)
如果用ps找不到不響應進程的pid ,可以用ps -ax|grep 程式名試試
2:
如果在X-window 下能看見不響應進程的視窗,可以用
Alt+F2
在出現的命令提示框中 輸入xkill
將出現的方形游標移到不響應的視窗上,點一下就能殺死此進程,關掉無反應的視窗。
3:
如果是startx(即整個X服務不響應,Ctrl+Alt+BackSpace也不能登出),用Ctrl+Alt+F1進入第一個虛擬控制台,斷行符號也沒用時,可以試試Ctrl+z,或者直接用Ctrl+Alt+F2進入第二個虛擬控制台,用
ps -ax|grep startx
記下startx的pid
用kill -9 pid 殺死startx
再回到第一個虛擬控制台,startx重啟 X 服務.
4:
想辦法重啟,乘機休息一下,放鬆,放鬆。