`stty tostop`이 설정된 경우 동일한 세션에 없는 프로세스가 여전히 tty에 쓸 수 있는 이유는 무엇입니까?

`stty tostop`이 설정된 경우 동일한 세션에 없는 프로세스가 여전히 tty에 쓸 수 있는 이유는 무엇입니까?

다음과 같은 쉘 상호 작용이 있습니다.

[OP@localhost linux]$ tty
/dev/pts/7
[OP@localhost linux]$ stty tostop
[OP@localhost linux]$

다른 터미널에 다음을 입력합니다.

[OP@localhost linux]$ echo hello > /dev/pts/7

원본 텍스트로 돌아가서 다음을 보았습니다.

[OP@localhost linux]$ tty
/dev/pts/7
[OP@localhost linux]$ stty tostop
[OP@localhost linux]$ hello

왜 이런거야? 에코 프로세스를 중지하면 안 되나요?

답변1

매뉴얼 페이지에는 다음과 같이 나와 있습니다 termios(3).

TOSTOP

SIGTTOU신호 보내기프로세스 그룹중 하나백스테이지 과정그것은 쓰려고 노력한다제어 터미널.

귀하의 echo프로세스[1]는 백그라운드 프로세스가 아니며 쓰기를 시도하지 않습니다.그것은tty를 제어하세요.

SIGTTIN또한 "프로세스 그룹" 비트에 유의하세요. , SIGTTOU, 등과 같은 작업 제어 신호는 , 및 같은 SIGINT파이프의 범인 프로세스뿐만 아니라 전체 프로세스 그룹/작업으로 전송됩니다 .foo | bar &foobar

[1] 실제로 echo는 내장된 쉘이므로 별도의 프로세스로 실행되지 않습니다.

관련 정보