Suspend

如何阻止應用程序被 Ctrl+z 掛起?

  • February 18, 2011

目前我正在dvtm一個終端內執行,並且vimdvtm. 當我按Ctrl+z打算暫停vim時,dvtm改為暫停。screen我對or沒有這個問題tmux,所以我認為它一定是dvtm做錯了什麼(或做錯了什麼)。我該如何解決?

更新:我錯了,這不是dvtm. 事實上,我正在使用dtach+dvtm組合併錯誤地認為 dvtm 有問題。問題確實出在dtach.

更新(新答案):

dtach有一個-z描述為“禁用暫停鍵處理”的選項。如果你問我會感到困惑,但它的效果似乎Ctrl+Z是傳遞給 Vim 而不是被dtach.

更一般的答案:一個程序喜歡dtachdvtm幾乎絕對控制傳遞給它“內部”執行的任何東西。這就像讓秘書聽寫一樣——你可以說你喜歡什麼,但秘書控制著紙上實際出現的內容。因此,如果您希望最終程序接收 Ctrl+Z,則必須讓所有中間層協同工作,無論是通過命令行選項還是原始碼編輯。


在我看來這是一個錯誤dvtm。從原始碼的檢查來看,它沒有捕捉到SIGTSTP信號,這是您按下Ctrl+時發送到終端前台應用程序的信號z。由於它沒有明確地擷取信號,它會退回到預設行為並被暫停。需要dvtm做的是捕捉這個信號並將其傳遞給它的一個視窗。

引用自:https://unix.stackexchange.com/questions/7586