Evitar que o LyX obtenha um SIGHUP e feche quando a janela do terminal estiver fechada

2

Eu escrevi um script Ruby para gerenciar meus documentos do LyX. O script tem uma interação CLI curta com o usuário (= me) e, em seguida, decide o nome do arquivo a ser aberto e o abre por meio de um comando lyx shell.

Agora, o problema é que eu preciso de um terminal para a interação CLI, mas quando eu fecho o terminal, o LyX aparece uma caixa de mensagem que diz "Sinal SIGHUP detectado! Tchau." e quando clico em OK , fecha o LyX.

Esse problema ocorreu quando lancei o shell através do comando exec do Ruby (que fecha o processo do ruby e inicia um novo processo para o comando shell fornecido). Quando tentei substituí-lo por um garfo, as janelas do LyX nunca abriram - meu palpite é que o LyX recebeu SIGHUP quando o script Ruby terminou e o terminal foi fechado - e confirmei isso quando adicionei um comando gets em o fim do script Ruby para evitar que ele fechasse - e então a janela do LyX foi aberta, mas quando eu pressionei Enter para terminar o script ruby, o LyX recebeu o SIGHUP e fechou.

Agora, eu provavelmente posso resolver isso substituindo a interação CLI por uma GUI e desistindo da janela do terminal, mas usar uma GUI para algo assim parece ser um exagero para mim. Então, existe uma maneira de impedir que o LyX feche quando eu fechar o terminal?

Estou executando o OpenSUSE 12.1 de 64 bits com o KDE, e o emulador de terminal é o Konsole.

    
por Idan Arye 03.03.2012 / 23:45

1 resposta

2

Uma opção é executá-lo com nohup:

nohup mycoollittlescript

Outra seria rodar dentro de um emulador de terminal como o tmux ou screen. Estes são aplicativos de terminal que são emuladores de terminal. Quando o terminal pai é fechado, eles permanecem em execução no background e você pode reconectá-los a partir de outra janela de terminal. Tente isto:

screen -R -d NameOfMyBackgroundJob

Na primeira vez, isso criará uma nova sessão. Usos repetidos do comando acima se conectarão à sessão existente e a desconectarão de qualquer outra janela de terminal.

    
por 03.03.2012 / 23:56