ncurses

用於以文字為基礎的使用者介面程式函式庫

ncursesnew curses)是一個程序庫,它提供了API,可以允許程序員編寫獨立於終端的基於文本的用戶界面英語Text-based_user_interface。它是一個虛擬終端中的「類GUI應用軟件工具箱。它還優化了屏幕刷新方法,以減少使用遠程shell時遇到的延遲

ncurses
基於ncurses的menuconfig(英語:Menuconfig)
基於ncurses的menuconfig英語Menuconfig
開發者GNU計劃
當前版本6.3(2021年11月8日,​3年前​(2021-11-08
源代碼庫 編輯維基數據鏈接
操作系統POSIX
類型部件工具箱
許可協議X11授權條款
網站invisible-island.net/ncurses/

歷史

編輯

ncurses中的n來源於單詞new。這是因為ncurses是System V第4.0版(SVr4)中curses自由軟件克隆, 而那又是停止開發的4.4 BSD curses的增強版。[1]System V嚴格遵守了X/Open發布的XSI Curses標準。

curses

編輯

1980年左右,加州大學伯克利分校為BSD操作系統開發了最初的curses庫,以支持面向屏幕的遊戲。它最初使用了termcap庫,其他程序,如vi編輯器中也使用了這個庫。[1]

BSD curses庫的成功促使貝爾實驗室在他們的System III和System V第1版Unix系統中,發布增強的curses庫。這個庫功能更強大,而且它用terminfo代替了termcap。然而,由於AT&T的源代碼分發政策,改進的curses庫並沒有被BSD社區廣泛接受。[1]

pcurses

編輯

約1982年時,帕維爾·柯蒂斯(Pavel Curtis)開發了貝爾實驗室curses的免費軟件克隆,名為pcurses。它由其他人維護到了1986年。[2]

ncurses

編輯

1991年年底時,在Zeyd Ben-Halim的努力下,pcurses庫得到了進一步改善。[1][2][3] 1993年11月,新庫以名字ncurses發布了,它的首個主版本為1.8.1。 隨後版本1.8.8(1995)的工作由埃里克·雷蒙主導,他添加了Juergen Pfeifer編寫的表單和菜單庫。[4]1996年起,它一直由Thomas E. Dickey維護。[2]

大多數ncurses調用可以很方便地移植到舊的curses上。只需重新編譯,System V的curses實現就可以支持BSD的curses程序。[5]然而,一些地方卻存在問題,如在處理終端縮放上,因為舊的curses沒有對應的功能。

終端數據庫

編輯

Ncurses可以使用terminfo(與可擴展數據)或termcap。其它curses的實現一般使用terminfo;少數使用termcap。有極少數實現(mytinfo是一個時間較久的例外[6])都可以使用。

許可

編輯

Ncurses是GNU計劃的一部分。 它是極少數不在GNU GPLLGPL下分發的GNU文件;它是在一個類似於MIT許可證寬自由軟件許可證下分發的。[7] 這是由於在開發者指定版權時,協議是由自由軟件基金會起草的。

在簽署協議以將權利交給FSF時,有條款寫道:

The Foundation promises that all distribution of the Package, or of any work "based on the Package", that takes place under the control of the Foundation or its agents or assignees, shall be on terms that explicitly and perpetually permit anyone possessing a copy of the work to which the terms apply, and possessing accurate notice of these terms, to redistribute copies of the work to anyone on the same terms.[7]

本基金會承諾,在本基金會、或其控制的代理人或受讓人中,所分發的任何本軟件包,或「基於本軟件包」的任何作品,應在條款中明確,永久允許任何人擁有一份適用此條款的作品副本,且在條款中明確聲明,以相同條款重分發此作品。

據維護者Thomas E. Dickey說,這排除了以任何版本的GPL重授權程序,因為它會對鏈接到這個庫的程序產生限制。[7]

使用ncurses的程序

編輯

有成百的程序使用ncurses。[8][9]一些程序,如GNU Screenw3m,只使用termcap接口執行屏幕管理。另一些,如GNU Midnight CommanderYaST,使用curses編程接口。

參見

編輯

參考資料

編輯
  1. ^ 1.0 1.1 1.2 1.3 Eric S. Raymond. ncurses: Portable Screen-Handling for Linux. Linux Journal. September 1995 [2013-05-10]. (原始內容存檔於2012-02-26). 
  2. ^ 2.0 2.1 2.2 Thomas E. Dickey. NCURSES - New Curses. December 1996 [2013-05-10]. (原始內容存檔於2019-05-08). 
  3. ^ The README file in ncurses 1.8.1 states "v0.1 July 31, 1992" and "v1.8.1 November 5, 1993", which agrees with the NEWS (changelog) file頁面存檔備份,存於網際網路檔案館
  4. ^ NCURSES - Frequently Asked Questions (FAQ): Who wrote NCURSES?. [2013-05-10]. (原始內容存檔於2018-08-21). 
  5. ^ A Hacker's Guide to Ncurses Internals. [2013-05-10]. (原始內容存檔於2018-03-21). 
  6. ^ Ross Ridge. mytinfo posting to comp.sources.unix newsgroup. Internet Systems Consortium, Inc. December 27, 1992 [2017年11月12日]. (原始內容存檔於2011年5月16日). 
  7. ^ 7.0 7.1 7.2 NCURSES - Frequently Asked Questions (FAQ): Is it GPL'd?. [2013-05-10]. (原始內容存檔於2018-08-21). 
  8. ^ Search results: +ncurses. freshmeat.net. [2013-05-10]. (原始內容存檔於2012-02-18). 
  9. ^ Projects tagged ‘ncurses’. ohloh. [2013-05-10]. (原始內容存檔於2013-05-15). 

外部連結

編輯

編程介紹

編輯

工具箱

編輯

語言綁定

編輯

分發和封裝

編輯