即使有进程尝试输出,Ctrl-C (SIGINT) 是否会阻止显示输出

即使有进程尝试输出,Ctrl-C (SIGINT) 是否会阻止显示输出

我有一个 bash 脚本做了错误的事情。所以我按下 Ctrl-C 来停止它。

现在我在终端上看到的输出是已运行的进程产生的所有输出。即使想要输出某些内容的进程已经运行/完成了它正在做的事情,Ctrl-C 也会阻止打印输出。

所以,我这样做:

for i in *; do rm -vf $i; done

我现在可以确定removed 'file'屏幕上的所有消息都已被删除,并且没有其他消息被删除吗?

也许相关信息:我通过 ssh 在屏幕会话中工作。

答案1

本质上是的

shell 进程捕获您的Ctrl-C中断后,它会停止它。

但也有一些注意事项,例如在for循环中可能有一个在后台运行的 cmd。

另外,有些命令运行得非常快,以至于您无法从 shell 获得快速响应(尤其通过远程连接!)或者什么时候它实际上已经收到了您使用 Ctrl-C 的“中断”。

相关内容