리눅스 프로세스의 혼란

리눅스 프로세스의 혼란

리눅스 프로세스에 대해 한 가지 의심이 있습니다.

사례 1:(여기에는 Firefox가 열려 있지 않습니다)

이 명령을 사용하여 명령 터미널에서 Firefox를 열면 firefox &프로세스가 백그라운드에서 시작된다고 가정합니다.

이제 터미널을 종료하면 Firefox도 종료됩니다.

사례 2:(여기서 하나의 Firefox가 이미 열려 있습니다)

이제 이 명령을 사용하여 명령 터미널에서 Firefox를 열면 firefox &프로세스가 백그라운드에서 시작됩니다.

하지만 이제 터미널을 종료하면 두 번째 Firefox(터미널에서 열림)에는 아무것도 적용되지 않습니다. 이유는 무엇입니까?

1번의 경우 닫히는데, 2번의 경우에는 무슨 일이 일어나고 있나요?

답변1

2의 경우에는 거의 같은 일이 발생합니다. 차이점은 firefox는 단일 인스턴스 응용 프로그램이며 시작 시 실행 중인 복사본을 발견하면 다음과 같이 수행된다는 것입니다.

  1. 다음을 사용하여 실행 중인 인스턴스에 명령줄 인수를 보냅니다.IPC
  2. 출구

일부 인수는 다른 동작으로 이어질 수 있으므로 이는 단순화된 알고리즘이지만 대부분의 경우 위와 같이 발생합니다.

따라서 두 번째 경우에는 백그라운드 프로세스가 1초 이내에 존재하지만 이전에 시작된 Firefox 인스턴스는 터미널과 독립적으로 계속 실행됩니다.

답변2

사례 1의 경우 터미널에 "바인딩된" 새로운 Firefox 프로세스를 시작하고 터미널을 종료하면 이후에 바인딩된 모든 프로세스가 종료됩니다.

2의 경우 &(백그라운드에서) FF를 호출하여 FF를 시작하더라도 이미 마스터 프로세스가 열려 있고 새 창이 다른 창의 "자식"으로 열리므로 터미널이 아닌 해당 창에 바인딩됩니다. 따라서 터미널을 종료해도 "그의" 자식이 아닌 ff가 아닌 모든 바인딩된 프로세스가 종료됩니다.

관련 정보