읽는 동안 직간접적인 맥락에서 어린이의 행동.

읽는 동안 직간접적인 맥락에서 어린이의 행동.

내가 할 때

( sleep 1; read x ; echo x=$x; echo done ) & 

그런 다음 기본 터미널 설정을 사용하면 작업이 중지됩니다 SIGTTIN.

만약 내가한다면

( ( sleep 1; read x ; echo x=$x; echo done ) & )

read내부 시스템 호출은 readEOF(0 반환)를 가져오며 SITTIN 중지는 발생하지 않습니다.

이러한 행동에 대한 설명은 무엇입니까?

답변1

이는 두 번째 경우 백그라운드 명령이 서브셸에서 실행되고, 서브셸에 작업 제어가 없기 때문에 입력을 리디렉션 /dev/null하고 SIGINT신호를 무시하여 SIGQUIT백그라운드 모드를 위조하기 때문입니다.

다음 답변도 참조하세요.

백그라운드 프로세스의 하위 쉘 이상한 동작

스크립트로 시작된 프로세스가 SIGINT를 수신하지 못했습니다.

` (sleep 123 &)` bash의 작업 제어에서 프로세스 그룹을 제거하시겠습니까?

백그라운드에서 시작하기 전에 프로세스가 종료되었습니다.

관련 정보