문자, 신호 및 터미널 간의 관계 제어

문자, 신호 및 터미널 간의 관계 제어

제어 문자와 신호 사이의 관계는 무엇입니까? 아니면 관련이 없는 걸까요?

터미널이 제어 문자를 수신합니까?

단말이 제어 문자를 수신한 후, 단말이 수신된 제어 문자에 응답하여 취할 수 있는 조치 중 하나를 처리하도록 신호를 보내는 것입니까?

예를 들어,

Linux의 터미널에서 Ctrl+C는 실행 중인 포그라운드 프로세스를 종료합니다. ASCII에서는 Ctrl+C가"텍스트 끝"을 나타내는 제어 문자.

ASCII에서 Ctrl+D는 전송 종료를 나타내는 제어 문자입니다. 제어 문자로 인해 터미널이 프로세스에 신호를 보내게 됩니까?

답변1

이것터미널 드라이버(운영 체제의 일부) 사이의 관계를 설정합니다.특수 문자그리고 신호. 당신의터미널 설정, 예를 들어 다음을 사용합니다.stty는 입력한 문자(있는 경우)로 수행할 작업을 결정하는 데 사용됩니다. 필요에 따라 이러한 특수 문자를 다시 할당할 수 있지만 몇 가지 주의 사항이 있습니다.

  • 각 함수에는 특수 문자가 하나만 있습니다.
  • 1바이트 문자만 사용하세요.

controlC그리고 controlD전통적인: 일부 응용 프로그램에서는 이러한 값을 하드코딩할 수 있지만 터미널 드라이버에서는 그렇게 할 필요가 없습니다.

터미널 드라이버는 소프트웨어이지 사용자의 일부가 아닙니다.단말기. 일부 키보드에서는 다른 키보드보다 특수 문자를 다르게 할당하는 것이 더 편리할 수 있습니다(특수 문자에 대한 일부 기본값 선택은 운영 체제마다 다를 수 있습니다).

추가 자료:

답변2

제어 문자와 신호는 어느 정도 관련되어 있습니다. stty -a터미널의 명령을 통해 신호와 문자 간의 일치를 확인할 수 있습니다 . 액세스할 수 있는 RHEL 서버는 다음을 표시합니다.

-bash-3.2$ stty -a
speed 38400 baud; rows 24; columns 135; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

이들 중 일부는 TTY 및 해당 입력 기능과 관련되어 있고 다른 일부는 신호와 관련되어 있습니다. 신호 부분:

intr = ^C; quit = ^\; susp = ^Z;

이는 SIGINT가 control-C, SIGQUIT가 control-백슬래시, SIGSTOP이 control-Z임을 의미합니다. 원하는 경우 일부 또는 전부를 재할당할 수 있습니다. 바라보다 man stty.

또는 같은 다른 제어 문자 erasewerase 터미널 드라이버 자체에서 가로채서 사용됩니다. 백스페이스를 할 때와 마찬가지로 터미널 드라이버는 화면과 입력 스트림에서 문자를 제거합니다. 터미널 드라이버의 "모드"(생 또는 조리, 부분 조리 가능)도 영향을 미칩니다. 텍스트 편집기는 제어 문자를 좋아 vim하고 emacs많이 사용하며 이러한 제어 문자를 입력하면 SIGINT 또는 SIGQUIT 또는 기타 어떤 것도 수신하지 않습니다. 프로그램은 TTY를 "원시 모드"로 설정하고 터미널 드라이버의 해석 없이 바이트만 읽을 수 있습니다.

관련 정보