C言語 - ncurses - 概要

 クラウディア
1. 概要
2. インストール
3. 環境

1. 概要

 気づいたら「curses」と「ncurses」と同じことを2つ書いていたので統一しようと思います。  「ncurses」は、「new curses」の略ですな。  そのあたりは「ウィキペディア - ncurses」でどうぞ。  コンソール画面でカーソル移動やスクリーン制御・非同期入力が使えるというありがたいライブラリです。  モニタリングしているものを「printf」で出力していると画面が流れていってしまったりしますが。  「ncurses」を使えば、一定の位置に一定の情報を表示し続けたりと・・・「CUI」でありながら「GUI」ライクな動きができます。  コンソールしかないようなリアルタイムのシステムで、モニタリングなどに使えば、大変重宝します。  あぁ、うまく説明できないなぁ。  今回、ウィキペディアを読んで初めて知ったのですが、「FreeBSD」のインストール時や「bsdconfig」で表示される  この画面。
「bsdconfig」

 「ncurses」を使って表示しているんですと。

 現在(2024年9月24日)の「FreeBSD」のインストーラは、出力先のモニタによって、「GUI」と「CUI」を使い分けているようです。
 少なくと、「FreeBSD」のロゴマークは、完全にそう。

2. インストール

 次項、以下「ncurses」を実例を使って説明しようかと思うのですが。  プラットフォームは 「FreeBSD」を使用しています。  最低限必要なこととして、「ncurses」をインストールしておく必要があります。  インストールされているか確認するには。

$ pkg version -n ncurses
ncurses-6.0.0s20171223_1           =
 何か表示されていれば、インストールされているということになります。  インストールされていなければ、以下のコマンドでインストールします。

pkg install ncurses
 「CentOS」では、なにかに付属してインストールされているようですが、明示的にインストールするには、

yum nstall ncurses

3. 環境

 ここの内容は、主に以下の環境で確認しています。
OS			FreeBSD 10.3 RELEASE i386
コンパイラ	Clang 3.4.1
make		GNU Make 4.2.1
 「curses」を C言語で使うためには、「curses.h」もしくは「ncurses.h」のインクルードとリンク時に「-lncursesw」が必須になります。  「libncursesw」は「libncurses」のワイド文字対応版で、「UTF-8」で記述する場合、「-lncursesw」の方が文字化けが少ないようです。  すなわち、ソースファイル名を「curses.c」として上部で、以下のように宣言することと

#include <ncurses.h>
 「Makefile」は、以下のように記述します。

MAIN = cursesw
CC	 = clang

all	:	curses

$(MAIN)	:	$(MAIN).c
	$(CC)	$@.c	-o $@ -lncursesw
ハイスピードプラン