Confusión en el proceso de Linux

Confusión en el proceso de Linux

Tengo una duda en el proceso de Linux.

caso 1:(aquí no hay Firefox abierto)

Supongamos que si abro Firefox desde la terminal de comandos usando este comando, firefox &el proceso comenzará en segundo plano.

Ahora si salgo de la Terminal Firefox también salgo

caso 2:(aquí ya hay un Firefox abierto)

Ahora, si abro Firefox desde la terminal de comandos usando este comando, firefox &el proceso comenzará en segundo plano.

Pero ahora, si salgo de la terminal, nada activará el segundo Firefox (abierto por la Terminal), ¿por qué?

En el caso 1 se cerrará, ¿qué pasa en el caso 2?

Respuesta1

En el caso 2 pasa casi lo mismo. La diferencia es que Firefox es una aplicación de instancia única y si al iniciar encuentra su copia ejecutándose, hace esto:

  1. Envía argumentos de línea de comando a la instancia en ejecución usandoIPC
  2. Salidas

Este es un algoritmo simplificado, ya que algunos argumentos pueden conducir a otro comportamiento, pero la mayoría de las veces todo sucede como se indicó anteriormente.

Por lo tanto, el proceso en segundo plano dura menos de un segundo en el segundo caso, mientras que la instancia de Firefox iniciada anteriormente continúa ejecutándose independientemente del terminal.

Respuesta2

En el caso 1, inicia un nuevo proceso de Firefox "vinculado" al terminal, eliminando el terminal y posteriormente elimina todos los procesos vinculados.

En el caso 2, incluso si inicia FF invocando & (en segundo plano), FF ya tiene un proceso maestro abierto y la nueva ventana se abrirá como "secundaria" de la otra, por lo que estará vinculada a esa, no a la terminal. Por lo tanto, matar la terminal aún elimina todos los procesos vinculados, no ff, que no es "su" hijo.

información relacionada