Como impedir que o aplicativo seja suspenso por Ctrl + z?

5

Atualmente, estou executando dvtm dentro de um terminal e vim dentro de dvtm . Quando pressiono Ctrl + z com a intenção de suspender vim , dvtm foi suspenso. Eu não tive esse problema com screen ou tmux , então acho que deve ser dvtm fazendo algo errado (ou não fazendo algo certo). Como posso consertar isso?

Atualização: Eu estava errado, isso não é um problema com dvtm . De fato, eu estava usando a combinação dtach + dvtm e erroneamente assumi que a dvtm estava com defeito. O problema é realmente com dtach .

    
por phunehehe 17.02.2011 / 16:47

1 resposta

8

Atualizar (nova resposta):

dtach tem uma opção -z com a descrição "Desativar processamento da chave suspensa". Confuso se você me perguntar, mas seu efeito parece ser que o Ctrl + Z é passado para o Vim ao invés de ser capturado por dtach .

Resposta mais geral: um programa como dtach ou dvtm tem um controle absoluto sobre o que é transmitido para o que está sendo executado "dentro" dele. É como ter uma secretária tomando o ditado - você pode dizer o que quiser, mas a secretária controla o que realmente aparece no papel. Então, se você quer que o programa final receba o Ctrl + Z, você precisa fazer com que todas as camadas do meio cooperem, seja através de opções de linha de comando ou edição de código fonte.

Parece que este é um bug em dvtm . A partir da inspeção do código-fonte, ele não captura o sinal SIGTSTP , que é enviado para o aplicativo de primeiro plano do terminal quando você pressiona Ctrl + z . Como não está captando o sinal explicitamente, ele recorre ao comportamento padrão e é suspenso. O que o dvtm precisa fazer é pegar este sinal e passá-lo para uma de suas janelas.

    
por 17.02.2011 / 17:23

Tags