
Por que quando faço command & exit
no terminal (como vimiv & exit
)vimivcontinua funcionando quando o terminal está fechado? eu esperavavimivpara começar como um trabalho em segundo plano no terminal atual e então receber umsuspiroquando o terminal está fechado e também sai. Por exemplo, se eu executar vimiv &
seguido de outro exit
comando,vimivirá fechar
Responder1
Eu esperava que o vimiv iniciasse como um trabalho em segundo plano no terminal atual e então recebesse um suspiro quando o terminal fosse fechado e também saísse.
Não, não é isso que acontece. vimiv
só receberia um SIGHUP
sinal (do kernel) se fosse umprimeiro planotrabalho, ou se fosse umparoutrabalho em segundo plano. Mas não é nenhum dos dois: é um trabalho em segundo plano em execução.
Ou se o bash (bash em particular, e não qualquer shell em geral) tivesse recebido um SIGHUP
sinal e o tivesse enviado a todos os seus trabalhos não rejeitados. Mas no seu exemplo os shells saem normalmente via exit
, não porque foram sinalizados por SIGHUP
[1].
Por exemplo, se eu executar
vimiv &
seguido de outroexit
comando,vimiv
fechará
Isso pode ser algo especial para esse vimiv &
programa - se eu entrar xclock &
e depois exit
em uma linha separada em um terminal, xclock
não será encerrado. No entanto, ele terminará se eu fechar o terminal a partir do X
botão, pois nesse caso bash
receberá um SIGHUP
sinal e o reenviará para xclock
.
[1] bash também pode enviar a SIGHUP
ao sair normalmente, mas apenas com shopt -s huponexit
, que não é o padrão.