如何阻止应用程序被 Ctrl+z 挂起?

phu*_*ehe 5 suspend dtach

目前我在dvtm终端vim内运行,在dvtm. 当我按Ctrl+z打算暂停时vim,却被暂停dvtm了。我没有这个问题screenor tmux,所以我认为它一定是dvtm做错了什么(或做错了什么)。我该如何解决?

更新:我错了,这不是dvtm. 事实上,我在使用dtach+dvtm组合并错误地认为 dvtm 有问题。问题真的出在dtach.

Jan*_*der 8

更新(新答案):

dtach有一个-z选项,描述为“禁用挂起键的处理”。如果你问我的话会令人困惑,但它的效果似乎Ctrl+Z是传递给 Vim 而不是被dtach.

更一般的答案:一个程序喜欢dtachdvtm几乎可以绝对控制传递给它“内部”运行的任何内容。这就像让秘书听写一样——你可以说出你喜欢的话,但秘书控制着纸上实际出现的内容。所以如果你想让终端程序接收到Ctrl+Z,你必须让所有中间层进行合作,无论是通过命令行选项还是源代码编辑。


在我看来,这是dvtm. 从源代码的检查来看,它没有捕捉到SIGTSTP信号,这是当您按下Ctrl+时发送到终端前台应用程序的信号z。由于它没有明确捕获信号,因此它退回到默认行为并被挂起。有什么dvtm需要做的就是抓住这个信号,并沿着它传递给它的一个窗口。