NCURSE 로 만들어 보는 유저 인터페이스(UI) - 2회 'Hello Ncurse!' - 2009/02/09 17:10

이번 시간에는 ncurse 프로그램의 가장 간단한 형태인 이른바 'Hello world' 을 만들어 보고 그 내용을 파악해 보도록 하겠습니다.

리스팅1은 전형적인 NCURSE 프로그램의 예를 보이고 있습니다.

 
리스팅 1

 

#include <ncurses.h>

//
// 화면상에 "Hello Ncurse!" 문자열을 디스플레이 한다
//
int main(void)
{
        initscr();
       
        /* main body */
        printw("Hello Ncurse!");
        refresh();

        getch();
        endwin();

        return 0;
}

/* 01_curse.c */

 

 

 
본 칼럼에서 사용된 예제를 직접 동작 시켜보기 위하여는 '01_curse.c' 라는 새 파일을 만드신 후 리스트1의 소스를 카피 해 넣으시고 아래의 컴파일및 실행요령을 따라 하시면 되겠습니다.
 
컴파일및 실행요령

 

gcc -o curse 01_curse.c -lncurses

./curse [엔터]


 
 
소스해설
 
initscr()
커스 터미널의 초기화 코드입니다. 이 함수는 화면을 지우고 공백 상태로 만듭니다. 커스 프로그램의 어떤 함수보다도 먼저 실행되어야 합니다.
보통 프로그램의 시작부에 놓이게 됩니다.
 
printw()
printf 와 동일한 기능을 하는 문자열 포맷출력 함수입니다. 현재의 커서 위치(y,x) 좌표상에 문자열을 출력해 줍니다. 부언한다면 문자열 출력버퍼상에 해당 문자들이 채워지며 이는 이후의 refresh() 함수에 의하여 실제 화면상에 표시되게 됩니다.

refresh()
printf 류의 함수들은 가상의 윈도우 버퍼상에 문자열을 출력하며 refresh() 함수가 실행 되었을때 비로소 그 내용이 화면상에 출력되게 됩니다.
이러한 특성은 잦은 화면 출력으로 생길수 있는 시스템의 성능 감소를 방지하며 사용자에게 때로는 편리함을 제공하기도 합니다.
반면, 사용자가 실수로 이 함수를 추가하는것을 잊게 된다면 화면상에는 의도한 출력이 일어 나지 않게 되므로 주의가 필요한 부분이기도 합니다.

endwin()
ncurse 프로그램의 종료시에 항상 호출되어야 합니다. 이 함수에서는 ncurse 사용 동적메모리를 반납하고 터미널을 다시 일반 모드로 전환 시킵니다.
고의로 혹은 부주의로 이를 빼먹었을 경우 터미널은 이상한 상태로 빠져 버릴 수도 있습니다.
 
ncurse 프로그램은 항상 다음과 같은 틀(Template)로 코드를 작성합니다.
 
ncurse 프로그램 템플리트

 

initscr();
 
본문내용을 여기에 . . .

endwin();



다음 시간에는 ncurse 의 여러가지 출력함수를 다룹니다.
NEXT . . .
posted by 가일(GUILE)

♡ 포스팅이 유익 하셨다면 E-mail로 가일의 임베디드 스쿨을 구독하세요->

Trackback Address :: http://www.hongikcom.com/trackback/22 관련글 쓰기
Name
Password
Homepage
Secret
< PREV |  1  |  ...  107  |  108  |  109  |  110  |  111  |  112  |  113  |  114  |  115  |  ...  131  |  NEXT >