서브쉘이 종료되기 전에 SIGSTOP에 따라 서브쉘의 하위 프로세스를 중지하는 방법은 무엇입니까?

서브쉘이 종료되기 전에 SIGSTOP에 따라 서브쉘의 하위 프로세스를 중지하는 방법은 무엇입니까?

Bash에서 를 실행하면 서브셸이 종료 ( sleep 123 &)sleep 123때 프로세스가 계속 실행됩니다. sleep 123상위 및 하위 쉘이 종료되기 전에 프로세스를 중지하려면 어떻게 해야 합니까 ?

합계를 받아 sleep 123프로세스가 종료되는지 확인하려고합니다 . 예를 찾고 있어요SIGHUPSIGCONTSIGHUP이 고아 프로세스로 전송되는데 왜 종료되지 않습니까?그리고기본적으로 커널은 고아가 되고 중지된 프로세스를 포함하는 프로세스 그룹에 SIGHUP을 보내 모든 프로세스를 종료합니까?

답변1

이는 설명하려는 동작을 보여줍니다.

(sleep 60 & kill -STOP $!)

이것은 sleep백그라운드로 들어가서 중지됩니다. SIGHUP서브쉘이 종료되면 종료됩니다.

신호는 일부 시스템 호출을 중단할 수 있습니다.signal(7)맨페이지(구체적으로 "신호 처리기가 시스템 호출 및 라이브러리 기능을 중단합니다" 섹션). 특별히 사용되는 시스템 호출은 신호 처리기가 호출될 때 sleep중단됩니다 . 이에 대해서는 다음 문서에 설명되어 있습니다.sleep(3).

관련 정보