Confusão no processo Linux

Confusão no processo Linux

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:

  1. Envia argumentos de linha de comando para a instância em execução usandoCIP
  2. 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

informação relacionada