一个好老好老的老程序员了。
全部博文(915)
分类: LINUX
2011-04-13 22:40:32
如果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:
想办法重启,乘机休息一下,放松,放松。