O aplicativo é conectado de duas maneiras: para bash e para o terminal.
A conexão com o terminal é que os fluxos padrão (stdin, stdout e stderr) do aplicativo estão conectados ao terminal. Aplicações GUI típicas não usam stdin ou stdout, mas podem emitir mensagens de erro para o stderr.
A conexão com o shell é que, se você iniciou o aplicativo com foo &
, ele permanece conhecido no shell como um trabalho, conforme explicado em Diferença entre nohup, disown e & . Quando você fecha o terminal, o shell recebe um SIGHUP
, que é propagado para seus jobs. Quando você digita exit
no shell, ele desativa as tarefas de antemão (isso é configurável até certo ponto).
Você pode cortar a conexão do shell com o disown
interno. Você não pode cortar a conexão do terminal, pelo menos não sem os métodos fraudulentos (usando um depurador) que podem travar o programa.