프로세스 그룹은 일반적으로 언제 생성되나요?

프로세스 그룹은 일반적으로 언제 생성되나요?

다른 프로그램의 많은 인스턴스를 생성하는 프로그램이 있습니다. 하위 프로세스를 생성하거나 때로는 실수로 데몬화하는 등의 경우에도 시간 초과 후 이를 종료할 수 있는 깔끔한 방법이 있었으면 좋겠습니다.

이제 프로세스 그룹 접근 방식을 사용합니다. 각 인스턴스는 자체 프로세스 그룹에서 실행되며 인스턴스를 종료하고 싶을 때 전체 그룹에 신호를 보냅니다. 지금까지 잘 작동하는 것 같습니다.

그러나 새로운 프로세스 그룹을 생성하여 내 통제를 벗어나는 것은 쉽습니다. 이러한 프로그램은 본질적으로 악의적이지 않지만(따라서 의도적으로 이를 수행하지는 않습니다) 매우 엉성하게 작성될 수 있습니다. Python 스크립트, 추악한 쉘 스크립트 등 무엇이든 될 수 있습니다.

그래서 내 질문은 프로세스 그룹이 일반적으로 언제 생성되는가입니다. 내 관찰에 따르면 대화형 쉘은 이를 생성하지만 비대화형 쉘은 그렇지 않습니다. 예를 들어, 비대화형 스크립트에서도 새로운 프로세스 그룹을 생성하는 경향이 있는 고급 쉘 구성이 있습니까?

답변1

"가끔 실수로 프로세스를 데몬화하는 것"이 ​​문제가 될 수 있습니다. 데몬화의 일부는 프로세스 그룹과의 연결을 해제하는 것입니다. 예를 들어 다음을 참조하세요.Daemonize의 페이지또는유닉스 프로그래밍 FAQ.

그 외에도 내가 [*]를 접한 것은 script때때로 명령의 출력을 캡처하기 위해 이를 사용해야 한다는 것입니다(예: 터미널과 파이프에 연결될 때 다르게 동작하기 때문입니다). script라고 하면 setsid프로세스 그룹도 시작됩니다.

스크립트 내에서 작업 제어를 켜는 것도 가능하며, 이를 통해 트릭을 수행할 수도 있습니다. 하지만 이것이 얼마나 일반적인지는 잘 모르겠습니다.

mpv[*] 저는 개인적으로 a 내에서 실행되고 script출력을 구문 분석하는 자주 사용하는 스크립트를 가지고 있습니다 .

관련 정보