상세 컨텐츠

본문 제목

[Linux] 정규모드(canonical)모드, standard 표준 모드

Linux...Mix coffee

by HeyLee 2011. 5. 12. 10:11

본문

앞으로 이 게시판은 리눅스 공부하면서 정리하는 내용들로 채워질것입니다.

첫번째로 정리할 내용.

selected = getchar();
 

다음 코드의 문제점. 사용자가 엔터를 입력해야만 처리를 하게 된다. 보통 터미널에서는 사용자가 엔터키를 
누를 때까지 프로그램에서 유효하지 않는다.
이는 사용자가 실수로 타이핑을 한경우 정정할 수있는 기회를 주므로 오히려 이롭고 사용자는 프로그램이
유효하게 만들기 위해 엔터키를 누르게 된다.

이런 동작을 정규(canonical) 모드나 표준(standard) 모드 라고 한다. 여기서 모든 입력은 줄단위로 처리 된다.
일반적으로 사용자가 엔터 키를 눌르기 전까지 어플리케이션은 일체 어떤 작동도 하지 않게 된다.

이와 반대되는 처리를 비 정규(non canonical) 모드라고 하게 된다.

프로그램이 실제로 인식하는 문자는 ASCII 개행 문자인  CR(10진수 13, 16진수 0D)가 아닌 
라인 피드인 LF(10진수 10, 16진수 0A) 이다. 이것은 유닉스가 텍스트의 한줄을 마치기 위해 항상 내부적으로 라인피드를 사용하기 떄문이다.  DOS같은 시스템에서는 라인피드와 개행문자를 같이 사용하는 반면에 유닉스는 새줄을 표현하기 위해 라인피드만을 사용한다.

다음 코드로 추가적인 라인피드 문자를 무시 할수있다.
  

Do{

  select =getchar();

}While(choice == ‘\n’);



 


댓글 영역