Text Mode Program에서 Ctrl+s Key 막는 법..!!
글쓴이: 익명 사용자 / 작성시간: 토, 2002/06/08 - 9:41오후
Linux에서 프로그램을 만들었습니다.
Text Mode로 메뉴만들고 메뉴 번호 치면 그 번호 들어가고..뭐 이런식에
간단한 프로그램을 만들었는데, Ctrl+s 를 치면 메뉴가 리플레쉬 되면서
한번에 주..우..욱 뿌려줘야 하는데, 하나의 printf("abcd"); 씩 키 입력
이 있을 때 마다 출력이 됩니다.
Ctrl+c 와 같은 특수키 조합을 막기위해 아래와 같은 문을 main()의 상단
에 넣었거든요.
---------------------------------
signal(SIGINT, SIG_IGN);
signal(SIGTSTP, SIG_IGN);
---------------------------------
그런데, Ctrl+c 와 같은 다른 키는 다 막는데, Ctrl+s만 막질 못합니다.
혹시 Ctrl+s를 막을 수 있는 방법이 있는지요....?
관련된 문서나 관련 사이트 있음 조언 부탁드립니다.
참.....Ctrl+s로 하나의 프린트문이 키 입력시마다 출력될 때 Ctrl+q를 입
력하면 다시 제대로 출력 됩니다.
뭔가가 제대로 처리되지 않는것 같은데, 다시한번 머리숙여 조언 부탁드립
니다.
그리고 제가 main()문에서 사용한 시그널함수를 제대로 쓰고 있는지도
요..
즐거운 하루 되세요.
Forums:
Re: Text Mode Program에서 Ctrl+s Key 막는 법..!!
사실상 막지 못합니다...
MAN Page를 보면 상세한 걸 알 수 있겠지만 몇몇 시그널을 막지 못하게
되어 있습니다. 이런걸 Non-Maskable Interrupt라고 합니다...
더 정확하게 말하면 ctrl-s를 막지 못하는게 아니라 tty stop이라는
시그널을 막지 못합니다.. 더 자세한건 stty MAN Page를 보세요...
Re: Text Mode Program에서 Ctrl+s Key 막는 법..!!
터미널 프로그램이라면 raw mode 혹은 cbreak 모드와 같은 non-canonical mode를 이용할 수 있지 않을까요?
Ctrl-S 가 SIGSTOP 시그널을 발생시키지 않도록 막으면 되니까요.
댓글 달기