Tenho uma dúvida no processo Linux
caso 1:(aqui nenhum Firefox está aberto)
suponha que se eu abrir um firefox no terminal de comando usando este comando, firefox &
o processo será iniciado em segundo plano.
Agora se eu sair do Terminal o Firefox também sai
caso 2:(aqui um Firefox já está aberto)
Agora, se eu abrir um Firefox no terminal de comando usando este comando, firefox &
o processo será iniciado em segundo plano.
Mas agora, se eu sair do terminal, nada irá para o segundo Firefox (aberto pelo Terminal), por quê?
No caso 1 ele irá fechar, o que está acontecendo no caso 2?
Responder1
No caso 2 acontece quase a mesma coisa. A diferença é que o Firefox é um aplicativo de instância única e se na inicialização ele encontrar sua cópia em execução, faça o seguinte:
- Envia argumentos de linha de comando para a instância em execução usandoCIP
- Saídas
Este é um algoritmo simplificado, pois alguns argumentos podem levar a outro comportamento, mas na maioria das vezes tudo acontece como acima.
Portanto, o processo em segundo plano existe menos de um segundo no segundo caso, enquanto a instância do Firefox lançada anteriormente continua a ser executada independentemente do terminal.
Responder2
No caso 1, você inicia um novo processo do Firefox "ligado" ao terminal, matando o terminal e subsequentemente matando todos os processos vinculados
No caso 2 mesmo que você inicie o FF invocando o & (em background) o FF já tem um processo master aberto e a nova janela será aberta como "filho" da outra então, vinculada a ela e não ao terminal. Portanto, matar o terminal ainda mata todos os processos vinculados, e não ff, que não é "seu" filho