Ctrl + C finalização do processo sem terminal kill

1

Comecei a usar o Sublime Text 3 para compilar meus scripts do FreeFem (solucionador de pacotes de interpretadores de PDEs) no Ubuntu 14.04. Para invocar o interpretador, eu customizava o sistema de compilação da seguinte forma

"shell_cmd": " gnome-terminal -x sh -c \"FreeFem++ $file ; exec sh\""

Sempre que executo a compilação, quero criar um processo de terminal separado que lance o FreeFem ++. Mas quando pressiono Ctrl + C , ele mata o terminal. Em vez disso, quero encerrar o processo, mas deixar a janela do terminal aberta.

    
por Alex 16.03.2015 / 11:17

1 resposta

0
Ctrl + C mata o shell, assim como o subprocesso FreeFem, porque o sinal SIGINT é enviado para todo o grupo de processos de primeiro plano. Como o shell não é interativo, o subprocesso é executado no mesmo grupo de processos. Veja Por que o SIGINT não é propagado para o processo filho quando enviado para seu processo pai? e Qual é o propósito das abstrações, sessão, líder de sessão e grupos de processos? para alguns contextos em grupos de processos.

Você pode fazer com que o shell não morra quando receber o SIGINT configurando uma armadilha para ele. (Não ignore o sinal: isso também faria com que ele fosse ignorado pelo subprocesso.)

"shell_cmd": " gnome-terminal -x sh -c \"trap echo INT; FreeFem++ $file ; exec bash\""
    
por 17.03.2015 / 01:21