Confusão no processo linux

1

Eu tenho uma dúvida no processo linux

case 1: (aqui o Firefox não está aberto)

suponha que se eu abrir um firefox a partir do terminal de comando usando este comando firefox & , o processo será iniciado em segundo plano.

Agora, se eu sair do Terminal Firefox, saia também

caso 2: (aqui um Firefox já está aberto)

Agora, se eu abrir um firefox a partir do terminal de comando usando este comando firefox & , o processo será iniciado em segundo plano.

Mas agora, se eu sair do terminal, nada vai para o segundo Firefox (aberto pelo Terminal) por quê?

No caso 1 ele fechará, o que está acontecendo no caso 2?

    
por max 21.08.2012 / 08:54

2 respostas

3

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, encontrar sua cópia em execução, faz isso:

  1. Envia os argumentos da linha de comando para uma instância em execução usando IPC
  2. sai

Isso é um algoritmo simplificado, já que alguns argumentos podem levar a outro comportamento, mas na maioria das vezes tudo acontece como acima.

Portanto, o processo em segundo plano existe em menos de um segundo no segundo caso, enquanto a instância do firefox anteriormente iniciada continua a ser executada independentemente do terminal.

    
por 21.08.2012 / 09:10
3

No caso 1, você inicia um novo processo do firefox "vinculado" ao terminal, matando o terminal e matando todos os processos ligados

No caso 2, mesmo que você inicie o FF invocando o & (em background) O FF já tem um proces master aberto e a nova janela será aberta como "child" do outro assim, ligado a isso não ao terminal. Portanto, matar o terminal ainda mata todos os processos ligados, não ff que não seja "seu" filho

    
por 21.08.2012 / 09:02

Tags