名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項 | ライブラリ一覧
本セクションでは、さまざまなライブラリにある関数のうち、直接 UNIX システムのプリミティブを呼び出す関数 (本マニュアルのセクション 2 で説明 ) 以外の関数について説明します。関数宣言は、各マニュアルページに示してある #include ファイルから取り込むことができます。いくつかの代表的な関数またはライブラリについては、セクション番号の後の文字で識別できます。
これらの関数は (BSD 関数との) ソース互換性ライブラリです。 このライブラリは、共有オブジェクトとしては libucb.so が、アーカイブとしては libucb.a が実装されています。ただし、C コンパイラシステムによって自動的にリンクはされません。 /usr/ucb サブディレクトリにある このライブラリをリンクする場合、cc のコマンド行上で -lucb を指定します。このライブラリ用のヘッダーファイルは /usr/ucbinclude にあります。
これらの関数、セクション 2 で説明する関数、および (3S) の関数は、標準 C ライブラリ libc です。これらは、C コンパイラシステムによって自動的にリンクされます。標準 C ライブラリは、共有オブジェクトとしては libc.so が、アーカイブとしては libc.a が実装されています。 デフォルトでは、C のプログラムは、C の標準ライブラリの共有オブジェクトのバージョンとリンクされることになっています。cc のコマンド行上で -dn を指定すると、 アーカイブのパージョンとリンクできます。その他の機能については、 libc(4) 、 cc(1B) および「 ANSI C Programmer's Guide 」の「 C Compilation System 」の章を参照してください。 関数によっては、標準に適合した環境における動作が異なる場合があります。これは個々のマニュアルページに記述されています。standards(5) を参照してください。
これらの関数は ELF (Extensible Linking Formats) アクセスライブラリ libelf です。このライブラリは、elf ファイル (実行可能ファイル、オブジェクトファイル、共有オブジェクトファイル) の作成および解析を行うためのインタフェースを提供しています。 libelf は、共有オブジェクトとしては libelf.so が、アーカイブとしては libelf.a が実装されています。ただし、 C コンパイラシステムによって 自動的にリンクはされません。このライブラリをリンクする場合、cc のコマンド行上で -lelf を指定します。libelf(4) を参照してください。
これらの関数は libgen という文字列パターンマッチングおよびパス名操作 ライブラリです。このライブラリはアーカイブとしては libgen.a が実装されています。ただし、共有オブジェクトとしては実装されておらず、C コンパイラシステムによっても自動的にリンクされません。このライブラリをリンクする場合、cc のコマンド行上で -lgen を指定します。
これらの関数はカーネルの仮想記憶ライブラリへアクセスすることができ、共有オブジェクトとしては libkvm.so が、アーカイブとしては libkvm.a が実装されています。 ただし、C コンパイラシステムによって 自動的にリンクはされません。このライブラリをリンクする場合、cc のコマンド行上で -lkvm を指定します。libkvm(4) を参照してください。
これらの関数は数学ライブラリ libm です。このライブラリは 共有オブジェクトとしては libm.so が、アーカイブとしては libm.a が実装されています。 ただし、C コンパイラシステムによって自動的にリンクはされません。このライブラリをリンクする場合、cc のコマンド行上で -lm を指定します。libmp(4) を参照してください。
これらの関数はネットワークサービスライブラリ libnsl です。このライブラリは 共有オブジェクトとしては libnsl.so が、アーカイブとしては libnsl.a が実装されています。ただし、C コンパイラシステムによって自動的にリンクはされません。このライブラリをリンクする場合、cc のコマンド行上で -lnsl を指定します。 libnsl(4) を参照してください。
man3n に含まれる関数の中には、以下のような他のネットワークライブラリを 組み込んでいるものもあります。
基本ネットワーク関数の多くは、X/Open ネットワークインタフェースライブラリの libxnet でも利用できます。libxnet インタフェースについての詳細は、後述の (3XN) を参照してください。
すべての場合において、XTI や TLI API より API ソケットを使用されることをお勧めします。XPGV4v2 システムへの互換性が必要な場合は、アプリケーションには必ず libxnet インタフェースを使用してください。互換性が必要でない場合は libxnet よりも libsocket と libnsl のソケットインタフェースを使用することをお勧めします。XTI と TLI API 間では、TLI インタフェース (libnsl で利用可能) よりも XTI インタフェース (libxnet で利用可能) を使用することをお勧めします。
これらの関数は POSIX.4 リアルタイムライブラリの libposix4 です。このライブラリは共有オブジェクトとしては libposix4.so だけが実装されています。 C コンパイラシステムによって 自動的にリンクはされません。 このライブラリをリンクする場合、cc のコマンド行上で -lposix4 を指定します。 libposix4(4) を参照してください。
これらの関数は標準 I/O パッケージです (stdio(3S) を参照 ) 。標準 C ライブラリ libc を使って、 コンパイルされ、C コンパイラシステムによって自動的にリンクされます。標準 C ライブラリは、共有オブジェクトとしては libc.so が、アーカイブとしては libc.a が実装されています。 libc(4) を参照してください。
これらの関数はスレッドライブラリ libpthread と libthread を構成します。これらのライブラリは、 マルチスレッドのアプリケーションを作成するために使われます。 libpthread が POSIX (standards(5) を参照) スレッドインタフェースを実装しているのに対し、libthread は Solaris スレッドインタフェースを実装しています。
POSIX と Solaris の両スレッドを同じアプリケーション内で使うこともできます。 両者の実装形態には互換性があります。ただし POSIX スレッドだけが、POSIX に適合した他の環境への移植性を保証します。
POSIX と Solaris の両スレッドを同一アプリケーション内で使用したとき、名前は同じでもセマンティクス (意味論) が異なる複数の呼び出しが存在していれば、Solaris スレッドよりも POSIX のセマンティクスの方が優先されます。たとえば fork() の呼び出しには、POSIX スレッドライブラリにリンクされたプログラム中の fork1() セマンティクスが、プログラムが Solaris スレッドである -lthread にもリンクされているか否かに関わらず暗黙のうちに含まれています。
libpthread と libthread ライブラリには共有オブジェクトとして libpthread.so と libthread.so がそれぞれ実装されています。 ただし、アーカイブライブラリとしては 実装されておらず、C コンパイラシステムによっても自動的にリンクされません。 これらのライブラリをリンクする場合、cc のコマンド行上で -lpthread または -lthread を指定します。 libpthread(4) と libthread(4) を参照してください。
以下の関数は、 POSIX ではオプションであり、現在の Solaris のリリースではサポートされていません。
int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol); int pthread_mutexattr_getprotocol( const pthread_mutexattr_t *attr, int protocol); int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int prioceiling); int pthread_mutexattr_getprioceiling( const pthread_mutexattr_t *attr, int *prioceiling);
特殊ライブラリ。 これらの関数はたとえば以下のライブラリに含まれています。
libadm (libadm(4) を参照)
libbsdmalloc
libcrypt
libcurses
libdl (libdl(4) を参照)
libform
libmail
libmalloc
libmapmalloc ( libmapmalloc(4) を参照)
libmenu
libpanel
これらの関数は /usr/xpg4/lib/libcurses.so.1 にある X/Open Curses ライブラリです。このライブラリは端末画面への入出力を作成したり、修正したりするための 国際化関数とマクロを提供します。このライブラリに含まれる関数は、ウィンドウの作成、テキストの強調、画面への書き込み、ユーザー入力の読み込み、カーソルの移動を行います。X/Open Curses は画面を更新する際の動作を最適化するように設計されています。X/Open Curses ライブラリは X/Open 拡張 Curses 仕様 Issue 4 に基づいています。
これらの関数は、X/Open CAE 仕様書の「 Networking Services, Issue 4 」(1994 年 9 月発行) に従っている X/Open ネットワークインタフェースを構成しており、/usr/lib/libxnet.so.1 にあります。コンパイルの詳細については、 libxnet(4) と standards(5) を参照してください。
文字とは、 マシンのバイトに適合できるビットパターンを指します。
例外 : 言語によっては、「文字」は 1 バイト以上を必要とし、複数バイトで表現されます。
NULL 文字とは、値が 0 の文字を指し、C 言語では便宜上 ¥ 0 と表されます。 文字配列とは、 文字の並び (シーケンス) を指します。 NULL 終了文字配列 (文字列) とは、 最後の文字が NULL 文字である文字の並びを指します。 NULL 文字列とは、 終了 NULL 文字だけを含む文字配列を指します。 NULL ポインタとは、 0 をポインタにキャストすることによって 得られる値を指します。 C 言語では、 NULL の値は絶対にどのような合法的なポインタとも一致しません。ですから、ポインタを返す関数のほとんどは ポインタを使ってエラーを示すため NULL を返します。 NULL マクロは <stdio.h> の中で定義されています。size_t の型は適切なヘッダーの中に定義されています。
MT レベルのライブラリの詳細については attributes(5) を参照してください。
通常、/usr/include
通常、/usr/ccs/lib
ar(1), cc(1B), ld(1), nm(1), fork(2), intro(2), stdio(3S), pthread_atfork(3T), libadm(4), libc(4), libelf(4), libdl(4), libkvm(4), libmapmalloc(4), libmp(4), libnisdb(4), libnsl(4), librac(4), libresolv(4), librpcsvc(4), libsocket(4), libpthread(4), libthread(4), libxfn(4), libxnet(4), attributes(5), standards(5)
プロファイリングツール
ANSI C Programmer's Guide
浮動小数点の値を返す関数の場合、エラー処理はコンパイルのモードによって変わります。cc に -Xt オプションを指定した場合 (デフォルト)、指定された引数を定義していないとき、または、 値を表現できないとき、これらの関数は 0、+-HUGE、または NaN という決まった値を返します。-Xa および -Xc コンパイルモードでは、+-HUGE の代わりに +-HUGE_VAL が返されます (HUGE_VAL および HUGE は math.h の中で定義されています。HUGE_VAL は無限を表し、 HUGE は単精度小数点の最大値を表します) 。
マルチスレッドアプリケーションをコンパイルする際、_POSIX_C_SOURCE フラグ、_POSIX_PTHREAD_SEMANTICS フラグ、_REENTRANT フラグのいずれかのフラグを、 コマンド行 に定義する必要があります。これにより、マルチスレッドのアプリケーションだけに適用される関数の定義が特別に有効になります。 POSIX.1003.1c に適合するアプリケーションに対しては、_POSIX_C_SOURCE フラグに 199506L 以上の値を定義してください。
cc [flags] file. . . -D_POSIX_C_SOURCE=199506L -lpthread |
Solaris の fork() と fork1() 関数を使用した POSIX では、 次のようにコンパイルしてください。
cc [flags] file. . . -D_POSIX_PTHREAD_SEMANTICS -lthread |
Solaris スレッドでは、 次のようにコンパイルしてください。
cc [flags] file. . . -D_REENTRANT -lthread |
シングルスレッドのアプリケーションを作成する際、 上記のフラグを定義してはいけません。定義しないことにより、マルチスレッドをサポートしていない旧リリースの Solaris 上で実行可能なバイナリが生成されます。
Unsafe インタフェースは、メインスレッド以外からは 呼び出さないでください。これはアプリケーションの安全な実行を保証するためです。
MT-Safe インタフェースは、各関数やライブラリのマニュアルページの 「属性」の項に記述されています ( attributes(5) を参照)。インタフェースが MT-Safe であることが マニュアルページ中に明示されていないときは、そのインタフェースは Unsafe であるとみなしてください。
早期のバインディングを可能にするための非 NULL 値に対して、環境変数 LD_BIND_NOW を設定してください。詳細については「リンカーとライブラリ」中の再配置に関する説明を参照してください。
ここで説明する関数、外部変数、またマクロをユーザーのプログラムの中で再定義してはいけません。他の名前を再定義してもこれらのライブラリの動作に影響を与えませんが、同じ名前を再定義すると、インクルードヘッダーの宣言と衝突してしまいます。
INCDIR の中にあるヘッダーは、本マニュアルで説明するほとんどの関数のプロトタイプを提供します (関数のプロトタイプとは、引数の型を含む関数宣言のことです) 。 関数のプロトタイプを使用すると、ユーザーのプログラムの中で使用されている 上記関数の使用法が間違っていないか、コンパイラがチェックすることができます。lint プログラムチェッカを使用すると、ヘッダーが #include 文によってインクルードされていないという矛盾をチェックすることができます。 セクション 2、 3C、 3S の定義は自動的にチェックされます。 その他の定義をチェックする場合、lint に -l オプションを指定します (たとえば、 libm の定義をチェックするには -lm を指定します) 。できるだけ lint を使用されることを強くお勧めします。「 プロファイリングツール 」の lint に関する章を参照してください。
STREAMS と stream の違いには十分気を付けてください。STREAMS とは、カーネルの機構の一種を指し、ネットワークサービスとデータ通信ドライバの開発をサポートします。STREAMS は、 ユーティリティルーチン、カーネル機能、そしてデータ構造体から構成されます。stream とは、 STREAMS に関連するバッファリングで使用されるファイルを指します。stream は <stdio.h> の中で FILE 型へのポインタとして定義されています。
各要素の詳細な定義では、実装に特有なシンボリック名を参照する必要がある場合があります。ただし、アプリケーションプログラムで使用できるかどうか 期待するのは必須ではありません。これらのシンボリック名の多くは、境界の条件やシステムの制限を記述するものです。
本セクションでは、分かりやすくするために、このような実装に特有な値をシンボリック名にしています。このようなシンボリック名は必ず中括弧 ( { } ) で囲まれ、他の実装に特有な定数のシンボリック名と区別されます。 後者のシンボリック名には、アプリケーションはヘッダーを使ってアクセスできます。 前者のシンボリック名にアクセスするためには、アプリケーションプログラムはヘッダーを使う必要はありません。ただし、このようなシンボリック名は特定のシステムの文書中で定義できます (定義していることもある)。
一般には、移植可能なアプリケーションプログラムは、コードの中で、このようなシンボリック名を参照してはいけません。たとえば、あるアプリケーションプログラムは、あるルーチンに提供された引数リストの長さが {ARG_MAX} より大きいかどうかをテストしてはなりません。
説明
関数およびライブラリの序章
curs_addwstr(3X) を参照
curs_addwch(3X) を参照
curs_addwstr(3X) を参照
regexpr(3G) を参照
strftime(3C) を参照
gettext(3C) を参照
strftime(3C) を参照
regexpr(3G) を参照
EUC コードセットに関する情報の取得
cset(3C) を参照
cset(3C) を参照
cset(3C) を参照
文字処理
CRT 画面操作および最適化用パッケージ
wchar_t 文字を属性とともに curses ウィンドウに追加してカーソルを進める
wchar_t 文字列を属性とともに curses ウィンドウに追加
wchar_t 文字列を curses ウィンドウに追加してカーソルを進める
カーソルを文字単位に移動するために ALE curses ライブラリに追加された関数
curses 端末キーボードから wchar_t 文字を得る (または戻す)
curses 端末キーボードから wchar_t 文字列を得る
curses ウィンドウ内のカーソル位置の文字の直前に wchar_t 文字を挿入
curses ウィンドウ内のカーソル位置の文字の直前に wchar_t 文字列を挿入
curses ウィンドウから wchar_t 文字とその属性を得る
curses ウィンドウから wchar_t 文字列とその属性を得る
curses ウィンドウから wchar_t 文字列を得る
curses パッドの作成と表示
gettext(3C) を参照
gettext(3C) を参照
curs_addwch(3X) を参照
euclen(3C) を参照
EUC 文字のバイト長および表示幅の取得
euclen(3C) を参照
ストリームからワイド文字コードを読み込む
getws(3S) を参照
printf(3S) を参照
ワイド文字コードをストリームへ書き出す
ワイド文字列をストリームへ書き出す
scanf(3S) を参照
ユーザー形式の日付および時刻の変換
curs_getwstr(3X) を参照
メッセージ処理関数
ストリームからワイド文字を読み込む
curs_getwch(3X) を参照
stdin ストリームからワイド文字を読み込み
コードセット情報の取得
ストリームからの EUC 文字の文字列をワイド文字に変換
curs_getwstr(3X) を参照
コード変換関数
curs_inwstr(3X) を参照
curs_inswstr(3X) を参照
curs_inswch(3X) を参照
curs_inswstr(3X) を参照
curs_inwch(3X) を参照
curs_inwstr(3X) を参照
ctype(3C) を参照
ctype(3C) を参照
ctype(3C) を参照
ctype(3C) を参照
ctype(3C) を参照
文字のバッファが暗号化されているかの判別
iswalpha(3C) を参照
ctype(3C) を参照
iswalpha(3C) を参照
ctype(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
ctype(3C) を参照
ctype(3C) を参照
ctype(3C) を参照
iswalpha(3C) を参照
ctype(3C) を参照
iswalpha(3C) を参照
ワイド文字の文字分類用関数
iswalpha(3C) を参照
iswalpha(3C) を参照
指定された文字のクラスの検査
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
iswalpha(3C) を参照
ctype(3C) を参照
文字のバイト数を取得する
文字列をワイド文字列に変換
複数バイト文字をワイド文字コードに変換
curs_addwstr(3X) を参照
curs_addwch(3X) を参照
curs_addwstr(3X) を参照
curs_getwstr(3X) を参照
curs_getwch(3X) を参照
curs_getwstr(3X) を参照
curs_inwstr(3X) を参照
curs_inswstr(3X) を参照
curs_inswch(3X) を参照
curs_inswstr(3X) を参照
curs_inwch(3X) を参照
curs_inwstr(3X) を参照
curs_addwstr(3X) を参照
curs_addwch(3X) を参照
curs_addwstr(3X) を参照
curs_getwstr(3X) を参照
curs_getwch(3X) を参照
curs_getwstr(3X) を参照
curs_inwstr(3X) を参照
curs_inswstr(3X) を参照
curs_inswch(3X) を参照
curs_inswstr(3X) を参照
curs_inwch(3X) を参照
curs_inwstr(3X) を参照
curs_pad(3X) を参照
curs_pad(3X) を参照
curs_pad(3X) を参照
curs_pad(3X) を参照
curs_pad(3X) を参照
書式付き出力
fputwc(3S) を参照
fputwc(3S) を参照
ワイド文字列の EUC 文字への変換
正規表現のコンパイルおよび一致ルーチン
書式付き入力の変換
プログラムのロケールの変更および照会
printf(3S) を参照
printf(3S) を参照
scanf(3S) を参照
regexpr(3G) を参照
日付および時刻を文字列に変換
curs_pad(3X) を参照
gettext(3C) を参照
整数を 7 ビット ASCII 文字へ変換
大文字を小文字に変換
大文字を小文字に変換
小文字を大文字に変換
小文字を大文字に変換
ワイド文字表現の大文字を小文字に変換
ワイド文字表現の小文字を大文字に変換
ワイド文字コードを入力ストリームにプッシュバック
curs_getwch(3X) を参照
curs_addwstr(3X) を参照
curs_addwch(3X) を参照
curs_addwstr(3X) を参照
wcstod(3C) を参照
wcstol(3C) を参照
wcstol(3C) を参照
wcstol(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
照合情報を使ってワイド文字列を比較
wcstring(3C) を参照
wcstring(3C) を参照
cset(3C) を参照
日付および時刻をワイド文字列に変換
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
ワイド文字列を倍精度浮動小数点数に変換
wcstring(3C) を参照
ワイド文字列を整数に変換
ワイド文字列を文字列に変換
ワイド文字列を符号なしロング整数に変換
ワイド文字列の操作
wcstring(3C) を参照
ワイド文字列のカラム数
ワイド文字列の変換
ワイド文字コードを複数バイト文字に変換
文字クラスの定義
ワイド文字コードのカラム数
curs_addwch(3X) を参照
curs_getwstr(3X) を参照
curs_getwch(3X) を参照
curs_getwstr(3X) を参照
wcstring(3C) を参照
curs_inwstr(3X) を参照
curs_inswstr(3X) を参照
curs_inswch(3X) を参照
curs_inswstr(3X) を参照
curs_inwch(3X) を参照
curs_inwstr(3X) を参照
wcstring(3C) を参照
wstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wstring(3C) を参照
wcscoll(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wstring(3C) を参照
wcstring(3C) を参照
wstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
wcstring(3C) を参照
書式付き出力変換
wcstring(3C) を参照
書式付き入力変換
wcstring(3C) を参照
wcstod(3C) を参照
wcstring(3C) を参照
wcstol(3C) を参照
ワイド文字の文字列操作
wcsxfrm(3C) を参照
名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項 | ライブラリ一覧