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

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

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

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

答案1

更新(新答案):

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

dtach更一般的答案:类似或 的程序dvtm对传递给其“内部”运行的任何内容具有几乎绝对的控制权。这就像让秘书听写一样——你可以说你想说的话,但秘书控制纸上实际显示的内容。因此,如果您希望最终程序接收 Ctrl+Z,则必须让所有中间层配合,无论是通过命令行选项还是源代码编辑。


在我看来这是一个错误dvtm。通过检查源代码,它没有捕获信号,该信号是当您按+SIGTSTP时发送到终端的前台应用程序的信号。由于它没有明确捕获信号,因此它会退回到默认行为并被挂起。需要做的就是捕获这个信号并将其传递到其中一个窗口。Ctrlzdvtm

相关内容