맨위로가기

Ncurses

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ncurses는 System V Release 4.0 curses의 자유-오픈 소스 소프트웨어 에뮬레이션으로, 단종된 4.4 BSD curses를 개선한 버전이다. 1991년 Zeyd Ben-Halim에 의해 개발이 시작되어 1993년 ncurses 1.8.1 버전으로 처음 출시되었으며, 이후 에릭 S. 레이몬드와 토마스 E. 디키가 유지보수를 담당했다. ncurses는 "new curses"의 약자로, 터미널 에뮬레이터가 아닌 실제 VT100 등의 터미널을 상정하여 개발되었으며, terminfo 또는 termcap을 사용할 수 있다. MIT 라이선스와 유사한 라이선스로 배포되며, GNU 프로젝트의 일부로 개발되었다. 수백 개의 프로그램에서 사용되며, Ada95, Common Lisp, JavaScript, PHP, Python, Ruby 등 다양한 프로그래밍 언어 바인딩을 지원한다.

더 읽어볼만한 페이지

  • 텍스트 사용자 인터페이스 라이브러리 - GNU readline
    GNU Readline은 텍스트 편집기 Emacs 및 vi 편집 모드를 지원하며, 키보드 입력을 에디터 명령으로 해석하고 Emacs 스타일의 키 바인딩을 제공하는 자유 소프트웨어 라이브러리이다.
  • 텍스트 사용자 인터페이스 라이브러리 - Curses
    curses는 텍스트 기반 터미널에서 사용자 인터페이스를 생성하기 위한 프로그래밍 라이브러리이며, 켄 아놀드가 BSD UNIX와 함께 개발했고, vi 편집기의 커서 이동 코드를 참고하여 만들어졌으며, termcap, terminfo, X/Open Curses를 거쳐 ncurses, PDCurses로 파생되어 유닉스 계열 운영체제에서 널리 사용된다.
  • C 라이브러리 - OpenSSL
    OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
  • C 라이브러리 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
  • GNU 프로젝트 소프트웨어 - GNU 코어 유틸리티
    GNU 코어 유틸리티는 유닉스 계열 운영체제에서 파일, 셸, 텍스트 조작을 위한 기본적인 명령어 모음으로, GNU 파일 유틸리티에서 시작하여 3개의 패키지가 통합되어 발전했으며 셸 스크립트 및 시스템 관리에 필수적인 도구를 제공한다.
  • GNU 프로젝트 소프트웨어 - GNU 허드
    GNU 허드는 유닉스 운영 체제를 대체하는 것을 목표로 개발된 GNU 프로젝트의 커널로, 마이크로커널 기반의 서버-클라이언트 아키텍처를 사용하며, 파일 시스템 기능을 확장하는 트랜슬레이터 개념을 제공한다.
Ncurses - [IT 관련 정보]에 관한 문서
기본 정보
ncurses 기반 menuconfig
개발자Thomas E. Dickey, Juergen Pfeifer, Eric S Raymond, Alexander V Lukyanov, Philippe Blain, Sven Verdoolaege, Nicolas Boulenguez 외
출시일1993년
최신 버전6.5
최신 버전 출시일2024년 4월 27일
프로그래밍 언어C
운영체제POSIX
종류위젯 툴킷
라이선스X11 라이선스
웹사이트공식 웹사이트
바인딩
Ada95Ada95 바인딩
PythonCurses Programming with Python - Python documentation
Gambasgb.ncurses - Gambas Wiki
Rubyncurses Ruby - RubyGems.org
PHPNcurses functions - PHP Manual
SpiderApenc plugin: ncurses bindings for SpiderApe
PerlCurses::UI - A curses based OO user interface framework
ooRexxooRexx Documentation 5.0.0: nCurses Class Library Reference
RustRust bindings for ncurses

2. 역사

ncurses는 "new curses"의 약자로, 개발이 중단된 4.4 BSD의 curses를 대체하기 위해 개발되었다. ncurses는 System V Release 4.0 (SVr4) curses의 자유-오픈 소스 소프트웨어 에뮬레이션이며,[12] X/Open에서 발행한 XSI Curses 표준은 UNIX System V를 모델로 삼고 있다.

기존 curses를 사용한 프로그램은 ncurses로 쉽게 이식할 수 있는데, System V curses 구현은 재컴파일만으로 BSD curses 프로그램을 지원할 수 있기 때문이다.[16] 그러나 터미널 크기 조절과 같이 이전 curses에 없는 기능은 문제가 된다. ncurses는 terminfo 또는 termcap을 사용할 수 있지만, 다른 curses 구현들은 일반적으로 terminfo를 사용한다.[24]

ncurses는 GNU 프로젝트의 일환으로 개발되었지만, 라이선스는 MIT 라이선스와 유사하다. 이는 당시 자유 소프트웨어 재단과 개발자 간의 저작권 합의에 따른 것이다.[22]

2. 1. curses

캘리포니아 대학교 버클리에서 BSD 운영 체제용으로 개발된 최초의 curses 라이브러리는 1980년경 텍스트 기반 어드벤처 게임인 로그를 지원하기 위해 개발되었다. 이 라이브러리는 원래 vi 편집기와 같은 다른 프로그램에서 사용된 termcap 라이브러리를 사용했다.[12]

BSD curses 라이브러리의 성공으로 벨 연구소는 System V Release 2 유닉스 시스템에서 향상된 curses 라이브러리를 출시하게 되었다. 이 라이브러리는 더 강력했고 termcap 대신 terminfo를 사용했다. 그러나 AT&T사의 소스 코드 배포 정책 때문에 BSD 커뮤니티에서는 널리 채택되지 못했다.[12]

2. 2. pcurses

1982년경, 파벨 커티스는 벨 연구소의 curses를 무료 소프트웨어로 복제하는 작업인 '''pcurses'''를 시작했으며, 1986년까지 여러 사람에 의해 유지되었다.[13]

2. 3. ncurses

ncurses는 terminfo (확장 가능 데이터 포함) 또는 termcap 가운데 하나를 사용할 수 있다. curses의 다른 구현물들은 일반적으로 terminfo를 사용하며, termcap을 사용하는 경우는 드물다. 둘 다 사용하는 경우는 거의 없다. (mytinfo는 더 오래된 예외임)[24]

ncurses는 단종된 4.4 BSD curses를 개선한 System V Release 4.0 (SVr4) curses의 자유-오픈 소스 소프트웨어 에뮬레이션이다.[12] X/Open에서 발행한 XSI Curses 표준은 UNIX System V를 명시적으로, 그리고 면밀하게 모델로 삼고 있다.

1991년 말 Zeyd Ben-Halim이 개발을 맡으면서 pcurses 라이브러리는 더욱 개선되었다.[12][13][14] 1993년 11월, 새로운 라이브러리는 버전 1.8.1을 첫 번째 주요 릴리스로 ncurses로 출시되었다. 이후 1.8.8 버전(M1995)까지의 작업은 에릭 S. 레이몬드(Eric S. Raymond)가 주도했으며, 그는 위르겐 파이퍼(Juergen Pfeifer)가 작성한 폼 및 메뉴 라이브러리를 추가했다.[15] 1996년부터는 토마스 E. 디키(Thomas E. Dickey)가 유지보수를 담당하고 있다.[13]

대부분의 ncurses 호출은 이전 curses로 쉽게 이식할 수 있다. System V curses 구현은 단순히 재컴파일만으로 BSD curses 프로그램을 지원할 수 있다.[16] 그러나 터미널 크기 조절과 같은 몇 가지 영역은 이전 curses에 해당 기능이 없기 때문에 문제가 된다.

ncurses는 "new curses"의 약자로, 개발이 중단된 4.4 BSD의 curses를 대체할 목적으로 개발되었다. 기존 curses를 사용한 프로그램의 이식은 용이하다. 그러나 터미널 에뮬레이터가 아닌 실제 VT100 등의 터미널을 상정했기 때문에, 터미널 크기 변경에 대한 대처 등은 이전 curses에는 없었다.

ncurses는 terminfo 또는 termcap을 사용할 수 있다. curses의 다른 구현에서는 일반적으로 terminfo를 사용하며, termcap을 사용하는 경우는 드물다. 몇 안 되는 예외로, mytinfo[21]는 둘 다 사용한다.

프로젝트 리더는 토마스 디키(Thomas Dickey)이다.

ncurses는 GNU 프로젝트의 일환으로 개발되었지만, 라이선스 조건은 GNU GPL이나 LGPL이 아닌, MIT 라이선스와 유사하다. 이는 당시 자유 소프트웨어 재단과 개발자 간에 맺어진 저작권에 관한 합의에 따른 것이다. 그러나 현재는 자유 소프트웨어 재단의 소프트웨어이므로, 장래에는 GPL이 될 가능성도 있다.[22]

3. 터미널 데이터베이스

ncurses는 terminfo (확장 가능 데이터 포함) 또는 termcap 가운데 하나를 사용할 수 있다. curses의 다른 구현물들은 일반적으로 terminfo를 사용하며 소수가 termcap을 사용한다. 둘 다 사용하는 경우는 거의 없다. (mytinfo는 더 오래된 예외임)[24]

4. 라이선스

ncurses는 GNU 프로젝트의 일부이지만, GNU 일반 공중 사용 허가서(GPL) 또는 GNU 약소 일반 공중 사용 허가서(LGPL)로 배포되지 않는다. 대신, MIT 허가서와 같은 허용적 자유 소프트웨어 라이선스로 배포된다.[18] 이는 개발자들이 저작권을 양도할 당시 자유 소프트웨어 재단(FSF)과 맺은 합의 때문이다.

FSF에 권리를 넘기기로 합의했을 때 다음과 같은 조항이 있었다.[18]

> 재단은 재단 또는 그 대리인 또는 양수인의 통제 하에 이루어지는 패키지 또는 "패키지를 기반으로 하는" 모든 작업의 배포가 해당 조건이 적용되는 작업의 사본을 소유하고 이러한 조건에 대한 정확한 통지를 받은 모든 사람이 동일한 조건으로 누구에게나 작업 사본을 재배포할 수 있도록 명시적이고 영구적으로 허용하는 조건으로 이루어질 것을 약속합니다.

유지 관리자 토마스 E. 디키(Thomas E. Dickey)에 따르면, 이는 GPL로의 재허가를 배제하는데, 이는 라이브러리에 연결할 수 있는 프로그램에 제한을 가하기 때문이다.[18]

5. ncurses를 사용하는 프로그램

GNU Screen과 w3m과 같은 일부 프로그램은 termcap 인터페이스만 사용하며 화면 관리를 직접 수행한다.[19][20] GNU Midnight Commander 및 YaST와 같은 다른 프로그램은 curses 프로그래밍 인터페이스를 사용한다.

6. 언어 바인딩

ncurses는 다양한 프로그래밍 언어에서 사용할 수 있도록 바인딩을 제공한다. 다음은 그 예시이다.

언어링크
Ada95[https://invisible-island.net/ncurses/Ada95.html Ada95용]
Common Lisp[https://common-lisp.net/project/cl-ncurses/ Common Lisp용]
자바스크립트[http://SpiderApe.sourceforge.net/plugins/ncurses/ JavaScript용]
PHP[https://www.php.net/manual/en/ref.ncurses.php PHP용]
Python[http://docs.python.org/lib/module-curses.html Python용]
Ruby[http://ncurses-ruby.berlios.de/ Ruby용]


참조

[1] 웹사이트 ncurses 6.5 https://lists.gnu.or[...] 2024-04-27
[2] 웹사이트 NCURSES – Licensing http://invisible-isl[...] 2013-07-09
[3] 웹사이트 Ada95 Binding for ncurses https://invisible-is[...]
[4] 웹사이트 Curses Programming with Python - Python documentation https://docs.python.[...]
[5] 웹사이트 gb.ncurses - Gambas Wiki http://gambaswiki.or[...]
[6] 웹사이트 ncurses Ruby - RubyGems.org https://rubygems.org[...]
[7] 웹사이트 Ncurses functions - PHP Manual https://www.php.net/[...] 2020-02-04
[8] 웹사이트 nc plugin: ncurses bindings for SpiderApe http://spiderape.sou[...]
[9] 웹사이트 Curses::UI - A curses based OO user interface framework https://metacpan.org[...]
[10] 서적 ooRexx Documentation 5.0.0: nCurses Class Library Reference https://sourceforge.[...] Rexx Language Association
[11] 웹사이트 Rust bindings for ncurses https://crates.io/cr[...]
[12] 간행물 ncurses: Portable Screen-Handling for Linux http://www.linuxjour[...] 1995-09
[13] 웹사이트 NCURSES - New Curses http://invisible-isl[...] 1996-12
[14] 문서
[15] 웹사이트 NCURSES - Frequently Asked Questions (FAQ): Who wrote NCURSES? http://invisible-isl[...]
[16] 웹사이트 A Hacker's Guide to Ncurses Internals http://invisible-isl[...]
[17] 웹사이트 On the Networks http://collaboration[...] C/C++ Users Journal 2017-09-15
[18] 웹사이트 NCURSES - Frequently Asked Questions (FAQ): Is it GPL'd? http://invisible-isl[...]
[19] 웹사이트 Search results: +ncurses on freshmeat.net http://freshmeat.net[...] 2013-05-10
[20] 웹사이트 Projects tagged 'ncurses' http://www.ohloh.net[...] ohloh
[21] 웹사이트 "'''mytinfo''' posting to '''comp.sources.unix''' newsgroup" http://www.isc.org/i[...] Internet Systems Consortium, Inc 1992-12-27
[22] 웹사이트 Will it ever be GPL? http://invisible-isl[...] 2013-01-19
[23] 웹인용 Announcing ncurses 6.3 https://lists.gnu.or[...] 2021-11-11
[24] 웹인용 "'''mytinfo''' posting to '''comp.sources.unix''' newsgroup" http://www.isc.org/i[...] Internet Systems Consortium, Inc 1992-12-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com