다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

8.3 Ncurses - 소개 (Introduction)

다음 용어들은 이 장에서 사용될 것이다.:

대개 ncurses 라이브러리를 사용하는 프로그램은 이처럼 보인다.:

.h를 포함하는(including) 것은 WINDOW와 함수원형(function prototype)와 같이 ncurses를 위한 변수들과 타입들을 정의한다. 자동적으로 .h,.h,.h,.h를 포함한다.

initscr()는 ncurses 자료 구조들을 초기화하고 적당한 terminfo 파일을 읽는데 사용된다. 메모리는 할당되어진다. 에러가 발생한다면, initscr는 ERR를 반환한다 그렇지않으면 포인터가 반환되어진다. 부가적으로, 화면은 지워지게 되고 초기화 되어질 것이다.

endwin()은 ncurses로 부터 할당된 모든 자원들을 청소하고 tty 모드에 initscr()을 호출하기 전 상태를 저장한다. initscr()은 curses로 부터 다른 어떤 함수이전에 호출되어져야 하고 endwin()는 프로그램을 끝내기 전에 호출되어져야 한다. 한 단말기 이상에 출력을 하고자 할 때는 initscr() 대신에 newterm(...)를 사용할 수 있다.

프로그램 컴파일하기:

플래그 안에 당신이 좋아하는 것을 포함할 수 있다(gcc(1)). ncurses.h를 위한 경로가 수정되었으면 다음 줄을 포함(include)하여야 한다.

그렇지 않으면, ncurses.h,nterm.h,termcap.h,unctrl.h은 찾을 수 없을 것이다. Linux에서 사용가능한 다른 플래그들:

2는 gcc에게 최적화(optimization)하라고 말한다, -ansi는 ansi에 일치하는 c-code용이다, -Wall는 모든 경고(warning)를 인쇄할 것이다, -m486는 인텔 486를 위한 최적화된 code를 사용할 것이다.(binary는 인텔 386상에서도 사용될 수 있다.).

ncurses 라이브러리는 /usr/lib에서 찾을 수 있다. ncurses 라이브러리는 세 버전이 있다.

화면(screen)을 위한 자료구조는 .h에 정의된 것처럼 윈도우즈(Windows)라 불리어 진다. 윈도우는 프로그래머가 단말기에 출력하는 것없이 조종할 수 있는 메모리 안에 있는 문자 배열과 같은 것이다. 디폴트 윈도우는 단말기의 크기이다. newwin(...)를 가지고 다른 윈도우를 만들 수 있다.

최상으로 물리적인 단말기를 업데이트하기 위해, ncurses는 선언된 또 다른 윈도우를 가지고 있다. 이것은 단말기가 실제로 어떻게 보여지는가의 이미지이고 단말기가 어떻게 보여져야만 하는가의 이미지이다. refresh()가 호출될 때 출력되어질 것이다. ncurses는 안에 있는 정보를 가지고 물리적인 단말기를 업데이트할 것이다. 라이브러리 함수들은 업데이트 프로세스를 위해 내부의 최적된 것을 사용할 것이므로 가장 최적의 방법으로 다른 윈도우들을 변화시키고 한번에 화면을 업데이트할 수 있다.

ncurses 함수들을 가지고 자료 구조체 window를 조종할 수 있다. w로 시작하는 함수들은 당신이 윈도우(window)를 지정하는 것을 허용하는 반면, 다른 것들은 일반적으로 작용한다. mv로 시작하는 함수들은 커서를 처음의 y,x 위치로 이동시킨다.

문자는 속성(attributes)에 대한 부가적인 정보를 저장하는 long unsigned int값인 chtype 타입을 갖는다.

ncurses는 데이타베이스를 사용한다. 일반적으로 데이타베이스는 /lib/terminfo에 위치하고 ncurses는 지역 단말기 정의를 거기서 찾는다. 원래의 terminfo를 변화시키지 않고 단말기에 대한 몇몇 다른 정의들을 테스트하기를 원한다면, 환경변수(environment variable)를 지정(set)하라. ncurses는 이 변수들을 체크하고 /usr/lib/terminfo/를 대신하여 거기에 저장된 정의들을 사용할 것이다.

현재 ncurses 버전은 1.8.6()이다.

이장의 끝에서 BSD-Curses,ncurses와 Sun-OS 5.4의 curses에 대한 개관(overview)이 담긴 표를 발견할 수 있다. 지정된 함수와 그것이 구현된 곳을 찾고자 할 경우에 참조하라.


이전:8.2.4 Termcap 능력들 다음:8.4 초기화 (Initializing)

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Dec 9,1997
Created Dec 9,1997