Suspend
如何阻止應用程序被 Ctrl+z 掛起?
目前我正在
dvtm
一個終端內執行,並且vim
在dvtm
. 當我按Ctrl
+z
打算暫停vim
時,dvtm
改為暫停。screen
我對or沒有這個問題tmux
,所以我認為它一定是dvtm
做錯了什麼(或做錯了什麼)。我該如何解決?更新:我錯了,這不是
dvtm
. 事實上,我正在使用dtach
+dvtm
組合併錯誤地認為 dvtm 有問題。問題確實出在dtach
.
更新(新答案):
dtach
有一個-z
描述為“禁用暫停鍵處理”的選項。如果你問我會感到困惑,但它的效果似乎Ctrl+Z
是傳遞給 Vim 而不是被dtach
.更一般的答案:一個程序喜歡
dtach
或dvtm
幾乎絕對控制傳遞給它“內部”執行的任何東西。這就像讓秘書聽寫一樣——你可以說你喜歡什麼,但秘書控制著紙上實際出現的內容。因此,如果您希望最終程序接收 Ctrl+Z,則必須讓所有中間層協同工作,無論是通過命令行選項還是原始碼編輯。在我看來這是一個錯誤
dvtm
。從原始碼的檢查來看,它沒有捕捉到SIGTSTP
信號,這是您按下Ctrl
+時發送到終端前台應用程序的信號z
。由於它沒有明確地擷取信號,它會退回到預設行為並被暫停。需要dvtm
做的是捕捉這個信號並將其傳遞給它的一個視窗。