cfmakeraw()
프로그램이 제어 터미널을 원시 모드로 설정 하도록 호출했는지 확인할 수 있습니까 ?
처음에는 터미널이 출력에 존재하는지 stty -a -F /dev/pts/N
확인하여 raw
터미널이 원시 모드에서 실행되고 있는지 확인할 수 있다고 생각했습니다.
그러나 설정( ) raw
을 결합하는 것 외에는 아무것도 없습니다 .man stty
raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -icanon -opost -isig -iuclc -ixany -imaxbel -xcase min 1 time 0
그리고 "입력을 문자별로 사용할 수 있는지 여부"(아래 참조)는 말하지 않습니다.
특히, ( )에 따라 표준 모드(기본 모드에 해당)가 설정됩니다 man termios
.
c_lflag의 ICANON 캐논 플래그 설정은 터미널이 정규 모드(ICANON이 설정됨) 또는 비정규 모드(ICANON이 설정되지 않음)에서 작동하는지 여부를 결정합니다. 기본적으로 ICANON이 설정되어 있습니다.
그러나 man stty
정의는 icanon
다음과 같습니다.
[-]icanon
enable special characters: erase, kill, werase, rprnt
입력이 문자별로(원시 모드) 또는 한 줄씩(표준 모드) 사용 가능한지 확인하는 방법은 무엇입니까?
man termios
:
Raw mode
cfmakeraw() sets the terminal to something like the "raw" mode of the old Version 7 terminal driver: input is available character by character, echoing is disabled, and all special processing of terminal input and output characters is disabled. The terminal at‐
tributes are set as follows:
termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
| INLCR | IGNCR | ICRNL | IXON);
termios_p->c_oflag &= ~OPOST;
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
termios_p->c_cflag &= ~(CSIZE | PARENB);
termios_p->c_cflag |= CS8;