![추가 읽기](https://linux55.com/image/120584/%EC%B6%94%EA%B0%80%20%EC%9D%BD%EA%B8%B0.png)
예를 들어 터미널에서 제어 문자를 보낼 때 을 누르면 Ctrl+C
,라인 규율이 제어 문자를 나타내는 바이트가 수신됩니다(의 0x03
경우 Ctrl+C
).
지금은 대신라인 규율0x03
터미널과 관련된 프로그램에 바이트를 보내면 대신 신호가 보내집니다 SIGINT
(또는 다른 제어 문자인 경우 다른 작업을 수행합니다).
이제 예방할 수 있는 방법이 있나요?라인 규율제어 문자 처리부터 시작하여, 내가 원하는 것은 터미널과 관련된 프로그램이 제어 문자( 0x03
우리의 경우)를 나타내는 실제 바이트를 수신하는 것입니다.
답변1
Linux에서는 다음을 사용할 수 있습니다.
$ stty intr undef
해당 터미널에서. 그러면 중단 문자가 빈("undef")으로 설정됩니다. 복원하려면 다음을 사용하십시오.
$ stty intr ^c
man stty
자세히보다.
답변2
다양한 제어 문자 […] 제어 문자
나는 복수형을 발견했습니다. 당신이 찾고있는비표준 입력 모드, POSIX 표준 이전에는 다음과 같이 알려져 있습니다.오리지널 모드. 이는 GNU Readline, ZLE 또는 libedit를 사용하는 응용 프로그램에서 채택한 모드입니다. 그들의 코드는 tcgetattr()
, 라이브러리 함수 cfmakeraw()
또는 tcsetattr()
이와 유사한 기능을 사용하여 설정합니다. 이것들은 의 기초이기도 합니다 stty raw
. ( stty sane
이 게임을 플레이하시는 경우, 존재한다는 점을 주의하시기 바랍니다.)
추가 읽기
- https://stackoverflow.com/a/39302351/340790
- POSIX 터미널 인터페이스. 위키피디아.
cfmakeraw()
. NetBSD 매뉴얼 페이지. 2004년.