![읽는 동안 직간접적인 맥락에서 어린이의 행동.](https://linux55.com/image/147230/%EC%9D%BD%EB%8A%94%20%EB%8F%99%EC%95%88%20%EC%A7%81%EA%B0%84%EC%A0%91%EC%A0%81%EC%9D%B8%20%EB%A7%A5%EB%9D%BD%EC%97%90%EC%84%9C%20%EC%96%B4%EB%A6%B0%EC%9D%B4%EC%9D%98%20%ED%96%89%EB%8F%99..png)
내가 할 때
( 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를 수신하지 못했습니다.