有一些 Linux 程序,例如 vlc,如果程序在第一个之后没有停止,则建议键入ctrl+c两次以从终端终止它们的执行。
为什么在第一次不起作用时键入ctrl+c两次会起作用?
Ric*_*rri 36
它所做的完全是特定于应用程序的。当您按下ctrl+ 时c,终端模拟器会向前台应用程序发送一个SIGINT信号,从而触发相应的“信号处理程序”。SIGINT 的默认信号处理程序终止应用程序。但是任何程序都可以为 SIGINT 安装自己的信号处理程序(包括根本不停止执行的信号处理程序)。
显然,vlc安装了一个信号处理程序,它尝试在第一次调用时进行一些清理/正常终止,并在第二次调用时回退到立即终止执行的默认行为。
Gil*_*il' 17
SIGINT是由Ctrl+发送的信号C,通常告诉程序进入其主命令处理循环,或者如果这没有意义,则干净地退出。某些程序在收到 SIGINT 时会运行清理过程。如果程序混乱到清理程序失败,在某些程序中,第二个Ctrl+C会导致程序立即退出。这取决于每个程序作者。
如果第二个Ctrl+C不杀死该程序,尝试Ctrl+ \,它发送SIGQUIT,更猛烈的(但仍然开捕信号)或尝试Ctrl+Z到暂停程序,随后的kill
命令(例如kill %1
,它发送SIGTERM,以往不太剧烈信号比 SIGQUIT,工作号 1)。如果所有其他方法都失败了,请使用发送无法捕获的信号SIGKILL 来终止程序kill -KILL
,也称为。kill -9
归档时间: |
|
查看次数: |
5632 次 |
最近记录: |