IXON과 IXOFF tty 속성의 차이점은 무엇입니까?

IXON과 IXOFF tty 속성의 차이점은 무엇입니까?

특히 우리는 의사 터미널 용어로 말합니다. 파일 설명자 masterslave의사 터미널 쌍이 있다고 가정합니다(제어 터미널이라고 가정). IXONon master(또는 같은 것)을 비활성화하면 slave이 작업을 수행할 때 write(master, &control_s_code, 1)read(slave, &byte, 1)코드를 얻게 됩니다. 같은 우려 control_q_code. 문제는 비활성화가 무엇을 하느냐는 것입니다 IXOFF.

답변1

IXOFFpseudo-ttys에서는 구현되지 않으며 IXOFFpseudo-tty에 대한 설정은 효과가 없습니다.

IXOFF입력 큐가 가득 찼을 때 tty 드라이버가 VSTOP다른 쪽 끝에 문자를 보내도록 해야 하며(더 많은 데이터를 보내는 것을 방지해야 함) VSTART문자를 처리하고 공간이 있을 때 다른 쪽 끝에 문자를 보내야 합니다. 더 많은 데이터.

IXON이는 후자 와 다르며 tty 드라이버가 VSTART상대방에서 전송된 / 문자를 존중하고 ( ) 문자가 수신될 때까지 모든 전송을 중지합니다.VSTOPVSTOP^SVSTART^Q

예를 들어 의사 tty의 경우 "다른 쪽 끝"이 기본 pty입니다. 터미널 에뮬레이터에서 설정 대신 yes를 누르면 ^S슬레이브 tty가 입력한 문자의 반향을 중지하고 여기에 기록된 데이터를 표시합니다(슬레이브 tty가 차단되거나 반환될 때 출력 대기열이 가득 찰 때까지 대기열에 보관됩니다).IXONIXOFFwrite(2)EAGAIN

커널은 항상 슬레이브의 입력 큐가 가득 차 있는지 여부를 (구조 필드 등을 확인하여) 알고 마스터의 pty에 쓰는 프로세스를 차단할 수 있기 때문에 pseudo-tty에 흐름 제어를 구현할 필요가 없습니다.

소프트웨어 흐름 제어는 실제 직렬 연결을 사용할 때만 유용합니다.아니요RTS/CTS와 같은 대역 외 신호: Unix, TCP 또는 기타 "파이프라인" 추상화와 달리 와이어는 버퍼링되지 않으며 수신자가 모든 상태 변경을 읽을 때까지 채워지거나 차단되지 않습니다.

관련 정보