
내가 할 때
( sleep 1; read x ; echo x=$x; echo done ) &
그런 다음 기본 터미널 설정을 사용하면 작업이 중지됩니다 SIGTTIN
.
만약 내가한다면
( ( sleep 1; read x ; echo x=$x; echo done ) & )
read
내부 시스템 호출은 read
EOF(0 반환)를 가져오며 SITTIN 중지는 발생하지 않습니다.
이러한 행동에 대한 설명은 무엇입니까?
답변1
이는 두 번째 경우 백그라운드 명령이 서브셸에서 실행되고, 서브셸에 작업 제어가 없기 때문에 입력을 리디렉션 /dev/null
하고 SIGINT
신호를 무시하여 SIGQUIT
백그라운드 모드를 위조하기 때문입니다.
다음 답변도 참조하세요.
스크립트로 시작된 프로세스가 SIGINT를 수신하지 못했습니다.