ncurses
此條目包含過多行話或專業術語,可能需要簡化或提出進一步解釋。 (2013年10月16日) |
此條目需要補充更多來源。 (2013年10月16日) |
開發者 | GNU計劃 |
---|---|
當前版本 | 6.3(2021年11月8日 | )
源代碼庫 | |
操作系統 | POSIX |
類型 | 部件工具箱 |
許可協議 | X11授權條款 |
網站 | invisible-island |
ncurses(new curses)是一個程序庫,它提供了API,可以允許程序員編寫獨立於終端的基於文本的用戶界面。它是一個虛擬終端中的「類GUI」應用軟件工具箱。它還優化了屏幕刷新方法,以減少使用遠程shell時遇到的延遲。
歷史
[編輯]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 GPL或LGPL下分發的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 Screen和w3m,只使用termcap接口執行屏幕管理。另一些,如GNU Midnight Commander和YaST,使用curses編程接口。
參見
[編輯]- SMG$。OpenVMS中可用的屏幕管理庫。
- conio。一個C頭文件,用於在MS-DOS編譯器中創建文本用戶界面。
- Curses Development Kit
- Dialog (軟件)
參考資料
[編輯]- ^ 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.0 2.1 2.2 Thomas E. Dickey. NCURSES - New Curses. December 1996 [2013-05-10]. (原始內容存檔於2019-05-08).
- ^ 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 (頁面存檔備份,存於網際網路檔案館)
- ^ NCURSES - Frequently Asked Questions (FAQ): Who wrote NCURSES?. [2013-05-10]. (原始內容存檔於2018-08-21).
- ^ A Hacker's Guide to Ncurses Internals. [2013-05-10]. (原始內容存檔於2018-03-21).
- ^ Ross Ridge. mytinfo posting to comp.sources.unix newsgroup. Internet Systems Consortium, Inc. December 27, 1992 [2017年11月12日]. (原始內容存檔於2011年5月16日).
- ^ 7.0 7.1 7.2 NCURSES - Frequently Asked Questions (FAQ): Is it GPL'd?. [2013-05-10]. (原始內容存檔於2018-08-21).
- ^ Search results: +ncurses. freshmeat.net. [2013-05-10]. (原始內容存檔於2012-02-18).
- ^ Projects tagged ‘ncurses’. ohloh. [2013-05-10]. (原始內容存檔於2013-05-15).
外部連結
[編輯]- 官方網站
- NCURSES — Frequently Asked Questions (FAQ)(頁面存檔備份,存於網際網路檔案館),Thomas Dickey
編程介紹
[編輯]- 「Writing Programs with NCURSES(頁面存檔備份,存於網際網路檔案館)」,埃里克·雷蒙和Zeyd M. Ben-Halim
- ncurses Programming HOWTO(頁面存檔備份,存於網際網路檔案館)(PDF版本(頁面存檔備份,存於網際網路檔案館))
- ncurses Beginner's Tutorial
- A Hacker's Guide to NCURSES(頁面存檔備份,存於網際網路檔案館)
工具箱
[編輯]語言綁定
[編輯]- Ada95綁定(頁面存檔備份,存於網際網路檔案館)
- C#綁定
- ANSI Common Lisp綁定(頁面存檔備份,存於網際網路檔案館)
- Free Pascal綁定
- Go綁定
- GNU Guile綁定(頁面存檔備份,存於網際網路檔案館)
- Haskell綁定(頁面存檔備份,存於網際網路檔案館)
- Java綁定
- JavaScript綁定(頁面存檔備份,存於網際網路檔案館)
- Lua綁定(頁面存檔備份,存於網際網路檔案館)
- Node.js綁定(頁面存檔備份,存於網際網路檔案館)
- Perl綁定(頁面存檔備份,存於網際網路檔案館)
- PHP終端屏幕控制功能(頁面存檔備份,存於網際網路檔案館)
- Python綁定
- Ruby模塊