리눅스 프로그래머를 위한 가이드
8. 문자단위 그래픽스 (Character Cell Graphics)
이장은 화소(pixel)를 기본으로 하지않는, 문자를 기본으로 하는 화면 입력과 출력을 다룬다.
우리가 문자(character)를 말할 때, 문자는 문자집합(charset)에 따라 변화되는 화소(pixel)의
조합을 의미한다. 텍스트(text)가 화소(pixel) 그래픽보다 매우 빨리 처리되기 때문에
그래픽 카드(graphic card)는 이미 한개이상의 문자집합(charset)을 제공하고, 기본적으로
텍스트(charset) 모드에서 동작한다. 간단(무딘)하고 지겨운 텍스트 표시하는 것 이상으로
단말기를 다룰 수 있다. 리눅스 단말기(terminal), 특히 콘솔(console)이 제공하는 특별한
특징들을 어떻게 사용할 것인가에 대해 설명하고자 한다.
- printf, sprintf, fprintf, scanf, sscanf, fscaf
이러한 함수들을 가지고 (표준출력 standard output), (표준에러 standard error), 또는
FILE *stream (files, 예를 들면)와 같은 다름 스트림(stream)에 형태가 지정된(formatted)
문자열을 출력할 수 있다. Scanf(...)는 비슷한 방법으로 형태가 지정된(formatted)
입력을 제공한다.
- termcap
단말기 능력 데이타베이스 (The TERMinal CAPabilites database)는 /etc/termcap 이라는
ASCII 파일에 들어있는 단말기 특징 개체(terminal description entries)들의 집합이다.
여기서 특수문자들을 어떻게 표시하는가, 어떻게 동작(delete,insert characters or line)들을
수행하는가 그리고 단말기를 어떻게 초기화 하는가에 대한 정보를 찾을 수 있다.
이 데이타베이스는, 예를들면, vi 에디터에 의해 사용된다. 단말기 능력(terminal capabilities)
(termcap(3x))을 사용하고 읽을 수 있는 view 라이브러리 함수들이 있다.
이 데이타베이스를 가지고, 프로그램은 같은 코드를 가진 단말기에서 다양한 작업을 할 수 있다.
termcap 데이타베이스와 라이브러리 함수들의 사용은 단말기에 대해 오직 하위 수준의 접근
(low level access)을 제공한다. 속성(attributes)과 색상(colors)과 매개변수화된(parameterized)
출력을 바꾸는 것은 프로그래머에 의해 수행되어야만 한다.
- terminfo database
단말기 정보 데이타베이스(the TERMinal INFOrmation database)는 termcap database를 기초로 하고
단말기 능력(terminal capabilities)을 설명하고 있지만, termcap보다는 더높은
수준(higher level)이다. terminfo를 사용하여, 프로그램은 화면 속성(screen attributes),
펑션키(function keys)와 같은 특별한 키의 사용과 그외의 것들을 쉽게 바꿀 수 있다.
데이타베이스는 /usr/lib/terminfo/[A-z,0-9]*에서 찾을 수 있다.
모든 파일은 한 단말기를 설명한다.
- curses
Terminfo는 프로그램안에서 단말기(terminal)를 다루기(handling) 위한 좋은 기초이다.
(BSD-)CURSES 라이브러리는 단말기에 대해 상위 수준의 접근(high level access)을 가능하게 하며,
terminfo database를 기초로 한다. curses는 화면상의 윈도우를 열고 조종할 수 있도록 하며,
입력과 출력 함수들의 완벽한 집합을 제공하고 150개 이상의 단말기에 대해 단말기의 독립적인
방식의 비디오 속성을 변경시킬 수 있다. curses 라이브러리는 /usr/lib/libcurses.a에서
찾을 수 있다. 이것은 curses의 BSD 버전이다.
- ncurses
Ncurses는 한단계 향상된 것이다. 1.8.6 버전에서는 SYSVR4에서 정의된 AT&T curses와 호환
되어야만 하고 색상 조종(color manipulation), 출력을 위한 특별한 최적화(special optimization
for output), 단말기 지정 최적화(terminal specific optimizations) 등과 같은 확장을 가져야만
한다. 이것은 SUN-OS, HP, Linux와 같은 많은 시스템들에서 테스트 되어 왔다. 다른 것들을 대신해서
ncurses를 사용할 것을 추천한다. SYSV 유닉스 시스템(SUN의 Solaris같은) 상에서는 nurses와 같은
기능을 갖는 curses 라이브러리가 존재해야 한다. (실제로 solaris curses는 마우스 지원과
보다 많은 기능을 가지고 있다.)
다음의 장에서 단말기를 다루기 위해 다른 패키지들을 어떻게 사용하는가에 대해 설명하겠다.
리눅스는 termcap의 GNU-버전을 가지고 있고 우리는 curses 대신에 nurses를 사용할 수 있다.
이전:7.2 사운드 카드 프로그래밍
다음:8.1 libc안의 I/O 함수
Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved
Email To:Webmaster ,
Another address
LAST UPDATE Dec 1,1997
Created Dec 1,1997