名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項
このセクションでは、さまざまな Solaris ライブラリにある関数のうち、直接 UNIX システムのプリミティブを呼び出す関数 (このマニュアルページのセクション 2 で説明) 以外の関数について説明します。関数の宣言は、各ページで説明されている #include ファイルから取得できます。このセクションの説明はライブラリ別になっています。各ライブラリは、セクション番号の後ろに入っているライブラリ名 (ライブラリの省略名) で識別できます。関連のあるライブラリのコレクションは、下記に示すように大きく 5 つのボリュームに分かれており、6 番目のボリュームは、この 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容説明になっています。ここでは、まず、この 6 番目のボリュームから説明します。
このボリュームでは、他の 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容について説明します。
このセクションで説明するライブラリはどれも、共有オブジェクトとして実装されています。
共有オブジェクトの説明には、共有オブジェクトの共有インタフェースを定義する大域シンボルの定義が含まれていることがあります (例: SUNW_1.1)。このほかのインタフェースは、共有オブジェクトに含まれている可能性があります (例: SUNW_private.1.1)。共有インタフェースは、アプリケーション開発用に、安定度の高い専用のシンボルセットを提供します。専用インタフェースは内部使用のみであり、随時変更される可能性があります。
共有オブジェクトの多くには、32 ビットのシステムのみで下位互換性を提供するアーカイブライブラリが用意されています。このようなライブラリを使用すると、アプリケーションによっては別の Solaris リリースに移行することができなくなる場合があります。このため、Solaris では、このようなライブラリの代わりにダイナミックリンクを使用するコンパイル方式が優先されます。
このセクションで説明する SunOS/BSD 互換ライブラリは、共有オブジェクトとして実装されています。上記の (3LIB) を参照してください。
このセクションで説明するヘッダーは、関数、マクロ、外部変数が使用するヘッダーです。ヘッダーには、関数のプロトタイプ、記号定数の定義、共通の構造体、プリプロセッサマクロ、定義済みの型が含まれています。残りの 5 つのボリュームで説明されている各関数は、この関数を使用するためにアプリケーションに含めなければならないヘッダーを指定します。多くの場合、必要なヘッダーは 1 つだけです。このようなヘッダーは、アプリケーション開発システムに配置されます。実行システムに配置する必要はありません。
このボリュームで説明する関数は、アプリケーション開発の基本となるコア C ライブラリ関数です。
セクション 2 の関数とともに標準 C ライブラリ libc を構成する関数です。libc は、C コンパイルシステムにより自動的にリンクされます。標準 C ライブラリは共有オブジェクト libc.so、アーカイブ libc.a として実装されています。C プログラムは、デフォルトで、標準 C ライブラリの共有オブジェクトバージョンにリンクされます。アーカイブバージョンにリンクするには、cc コマンド行で -Bstatic または -dn を指定します。このほかの優先指定については、libc(3LIB)、cc(1B) を参照してください。『ANSI C Programmer's Guide』の「C Compilation System」の章にも参考になる情報があります。規格に合致した環境では、動作が異なる関数もあります。こうした動作については、個々のマニュアルページで説明されています。standards(5) を参照してください。
ダイナミックリンクライブラリ libdl を構成する関数です。このライブラリは共有オブジェクト libdl.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。cc コマンド行で -ldl を指定すると、このライブラリにリンクできます。libdl(3LIB) を参照してください。
libmalloc、libbsdmalloc、libmapmalloc、libmtmalloc という複数のメモリー割り当てライブラリを構成する関数です。これらのライブラリはそれぞれ共有オブジェクト libmalloc.so、libbsdmalloc.so、libmapmalloc.so、libmtmalloc.so として実装されています。このうち libmtmalloc 以外のすべては、アーカイブ libmalloc.a、libbsdmalloc.a、libmapmalloc.a としても実装されています。このライブラリ群は、C コンパイルシステムによって自動的にはリンクされません。libmalloc、libbsdmalloc、libmapmalloc、libmtmalloc とリンクするには、それぞれ -lmalloc、-lbsdmalloc、-lmapmalloc、-lmtmalloc の各オプションを指定します。libmalloc(3LIB)、libbsdmalloc(3LIB)、libmapmalloc(3LIB)、libmtmalloc(3LIB) を参照してください。
BSD 関数を含むソース互換ライブラリを構成する関数です。共有オブジェクト libucb.so、アーカイブ libucb.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリは /usr/ucb サブディレクトリにあるため、cc コマンド行で -lucb を指定することによってリンクできます。このライブラリのヘッダーは、/usr/ucbinclude に入っています。libucb(3LIB) を参照してください。
このボリュームで説明する関数は、さまざまなネットワーキングライブラリを構成します。
このライブラリ中の関数は、Generic Security Services API (GSS-API) ライブラリを構成するルーチンです。このライブラリは共有オブジェクト libgss.so.1 として実装されています。ただし、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lgss を指定します。libgss(3LIB) を参照してください。
軽量ディレクトリアクセスプロトコルライブラリを構成する関数です。このライブラリは共有オブジェクト libldap.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lldap を指定します。ldap(3LDAP) を参照してください。
ネットワークサービスライブラリ libnsl を構成する関数です。このライブラリは共有オブジェクト libnsl.so、アーカイブ libnsl.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lnsl を指定します。libnsl(3LIB) を参照してください。
基本ネットワーキング関数の多くは、X/Open ネットワーキングインタフェースライブラリにも入っています。libxnet インタフェースの詳細については、下記のセクション (3XNET) を参照してください。
リモート非同期呼び出しライブラリ librac を構成する関数です。このライブラリは共有オブジェクト librac.so、アーカイブ librac.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lrac を指定します。librac(3LIB) を参照してください。
リゾルバライブラリ libresolv を構成する関数です。このライブラリは共有オブジェクト libresolv.so、アーカイブ libresolv.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lresolv を指定します。libresolv(3LIB) を参照してください。
遠隔手続き呼び出しライブラリ librpcsvc と librpcsoc を構成する関数です。librpcsoc は互換性の提供のみを目的としたライブラリなので、これには新しいアプリケーションをリンクしないでください。この 2 つのライブラリは、それぞれ共有オブジェクト librpcsvc.so と librpcsoc.so として、また、アーカイブ librpcsvc.a として実装されています (librt(3LIB) 参照)。どちらのライブラリも、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -lrpcsvc か -lrpcsoc を指定します。librpcsvc(3LIB) および librpcsoc(3LIB) を参照してください。
SLP (サービスロケーションプロトコル, Service Location Protocol) ライブラリ libslp を構成する関数です。このライブラリは、共有オブジェクト libslp.so.1 として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。libslp(3LIB) を参照してください。
ソケットライブラリ libsocket を構成する関数です。このライブラリは、共有オブジェクト libsocket.so、アーカイブ libsocket.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsocket を指定します。libsocket(3LIB) を参照してください。
X/Open フェデレーテッドネーミングライブラリ libxfn を構成する関数です。このライブラリは共有オブジェクト libxfn.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lxfn を指定します。libxfn(3LIB)、xfn(3XFN)、 fns(5)、standards(5) を参照してください。
X/Open CAE 仕様『Networking Services』(Issue 4、1994 年 9 月) に準拠した X/Open ネットワーキングインタフェースを構成する関数です。このライブラリは共有オブジェクト libxnet.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lxnet を指定します。コンパイル情報については、libxnet(3LIB) および standards(5) を参照してください。
どのような状況でも、XTI API や TLI API ではなく、ソケット API を優先的に使用することをお勧めします。ただし、ほかの XPGV4v2 (standards(5) を参照) システムに移植する必要がある場合は、アプリケーションで libxnet インタフェースを使用する必要があります。移植の必要がない場合は、libxnet のインタフェースではなく、libsocket や libnsl のソケットインタフェースを使用する方法をお勧めします。XTI API、TLI API の中では、libnsl で使用できる TLI インタフェースよりも libxnet で使用できる XTI インタフェースのほうをお勧めします。
このボリュームで説明する関数は、グラフィックスと文字が表示された画面の更新機能を提供するライブラリを構成します。
curses ライブラリ libcurses を構成する関数です。このライブラリは共有オブジェクト libcurses.so、アーカイブ libcurses.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcurses を指定します。libcurses(3LIB) を参照してください。
forms ライブラリ libform を構成する関数です。このライブラリは共有オブジェクト libform.so、アーカイブ libforms.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lform を指定します。libform(3LIB) を参照してください。
menus ライブラリ libmenu を構成する関数です。このライブラリは共有オブジェクト libmenu.so、アーカイブ libmenu.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmenu を指定します。libmenu(3LIB) を参照してください。
panels ライブラリ libpanel を構成する関数です。このライブラリは共有オブジェクト libpanel.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lpanel を指定します。libpanel(3LIB) を参照してください。
グラフィックスライブラリ libplot を構成する関数です。このライブラリは共有オブジェクト libplot.so、アーカイブ libplot.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lplot を指定します。libplot(3LIB) を参照してください。
/usr/xpg4/lib/libcurses.so.1 にある X/Open Curses ライブラリを構成する関数です。このライブラリは、端末画面での入力と出力、その変更に使用する国際化された関数とマクロのセットを提供します。このライブラリには、ウィンドウの作成、テキストの強調表示、画面への書き込み、ユーザーの入力の読み取り、カーソルの移動などを実行するための関数が含まれています。X/Open Curses は、画面更新動作を最適化するように設計されています。X/Open Curses ライブラリは、X/Open Extended Curses 仕様 (Issue 4) に全面的に準拠していいます。
このボリュームで説明する関数は、スレッドおよびリアルタイムライブラリを構成します。
非同期入出力ライブラリ liaio を構成する関数です。このライブラリは共有オブジェクト libaio.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -laio を指定します。libaio(3LIB) を参照してください。
doors ライブラリ libdoor を構成する関数です。このライブラリは共有オブジェクト libdoor.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -ldoor を指定します。
POSIX.4 リアルタイムライブラリ librt を構成する関数です。このライブラリは共有オブジェクト librt.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lrt を指定します。このライブラリは、以前は libposix4 という名前でした。下位互換のため、この libposix4 も維持されていますが、こちらの使用はできるだけ避けてください。librt(3LIB) を参照してください。
LWP スケジューリングライブラリ libsched を構成する関数です。このライブラリは共有オブジェクト libsched.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsched を指定します。
スレッドライブラリ libpthread、libthread、libthread_db を構成する関数です。libpthread ライブラリと libthread ライブラリは、マルチスレッドアプリケーションの構築に使用します。libpthread は POSIX (standards(5) を参照) スレッドインタフェースを実装していますが、libthread が実装しているのは Solaris スレッドインタフェースです。libthread_db ライブラリは、マルチスレッドアプリケーションのデバッガの構築に役立ちます。
POSIX スレッドと Solaris スレッドの実装には互換性があります。このため、双方のスレッドを同じアプリケーション内で使用することができます。ただし、POSIX 準拠の別の環境への移植性が保証されているのは POSIX スレッドの方だけです。
POSIX スレッドと Solaris スレッドを同じアプリケーション内で使用しているとき、同じ名前でありながら意味解釈の異なる呼び出しがあると、Solaris スレッドではなく POSIX スレッドを指すものと解釈されます。たとえば、fork() の呼び出しは、POSIX スレッドライブラリにリンクしたプログラム内の fork1() を意味することになります。このプログラムが POSIX スレッドと同時に Solaris スレッド -lthread にもリンクしていたとしても、呼び出しが示しているのは POSIX スレッドの方になります。
libpthread、libthread、libthread_db の各ライブラリは、それぞれ共有オブジェクト libpthread.so、libthread.so、libthread_db.so として実装されていますが、アーカイブライブラリとしても実装されているのは libthread_db のみです。このアーカイブの名前は libthread_db.a です。これらのライブラリはいずれも、C コンパイルシステムによって自動的に実装されていはいません。このライブラリ群にリンクするには、cc コマンド行で、-lpthread、-lthread、-lthread_db のいずれかを指定します。libpthread(3LIB)、libthread(3LIB)、libthread_db(3LIB) を参照してください。
次の関数は、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);
このボリュームで説明する関数は、特化されたさまざまなライブラリを構成します。構成されるライブラリは、次に示す限りではありません。
基本セキュリティライブラリ libbsm を構成する関数です。このライブラリは共有オブジェクト libbsm.so、アーカイブ libbsm.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lbsm を指定します。libbsm(3LIB) を参照してください。
構成管理ライブラリ libcfgadm を構成する関数です。このライブラリは共有オブジェクト libcfgadm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcfgadm を指定します。libcfgadm(3LIB) を参照してください。
CPU パフォーマンスカウンタライブラリ libcpc およびプロセスコンテキストライブラリ libpctx を構成する関数です。これらのライブラリはそれぞれ共有オブジェクト libcpc.so および libpctx.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcpc を指定します。libcpc(3LIB) および libpctx(3LIB)を参照してください。
デバイス ID ライブラリ libdevid を構成する関数です。このライブラリは共有オブジェクト libdevid.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -ldevid を指定します。libdevid(3LIB) を参照してください。
デバイス情報ライブラリ libbsm を構成する関数です。このライブラリは共有オブジェクト libdevinfo.so、アーカイブ libdevinfo.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -ldevinfo を指定します。libdevinfo(3LIB) を参照してください。
DMI ライブラリ libdmi、libdmici、libdmimi を構成する関数です。これらのライブラリはそれぞれ、共有オブジェクト libdmi.so、libdmici.so、libdmimi.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -ldmi、-ldmici、-ldmimi のいずれかを指定します。libdmi(3LIB)、libdmici(3LIB)、libdmimi(3LIB) を参照してください。
ELF (Extensible Linking Format) アクセスライブラリ libelf を構成する関数です。このライブラリは elf ファイルの作成と分析用のインタフェースを提供します。elf ファイルには、実行ファイル、オブジェクト、共有オブジェクトがあります。libelf は共有オブジェクト libelf.so、アーカイブ libelf.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lelf を指定します。libelf(3LIB) を参照してください。
拡張アカウンティングアクセスライブラリ libexacct およびプロジェクトデータベースアクセスライブラリ libproject を構成する関数です。これらのライブラリはそれぞれ、共有オブジェクト libexacct.so および libproject.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらのライブラリにリンクするには、cc コマンド行で -lexacct または -lproject を指定します。libexacct(3LIB) および libproject(3LIB) を参照してください。
文字列のパターンマッチングやパス名の操作を行うライブラリ libgen を構成する関数です。このライブラリは共有オブジェクト libgen.so、アーカイブ libgen.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lgen を指定します。libgen(3LIB) を参照してください。
カーネル統計情報ライブラリを構成する関数です。このライブラリは共有オブジェクト libkstat.so、アーカイブ libkstat.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lkstat を指定します。libkstat(3LIB) を参照してください。
カーネルの仮想メモリーライブラリへのアクセスを許可する関数です。このライブラリは共有オブジェクト libkvm.so、アーカイブ libkvm.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lkvm を指定します。libkvm(3LIB) を参照してください。
レイアウトサービスライブラリを構成する関数です。このライブラリは共有オブジェクト liblayout.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -llayout を指定します。liblayout(3LIB) を参照してください。
数学ライブラリ libm を構成する関数です。このライブラリは共有オブジェクト libm.so、アーカイブ libm.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lm を指定します。
ユーザーのメールボックス管理ライブラリ libmail を構成する関数です。このライブラリは共有オブジェクト libmail.so、アーカイブ libmail.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmail を指定します。
整数型数学ライブラリ libmp を構成する関数です。このライブラリは共有オブジェクト libmp.so、アーカイブ libmp.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmp を指定します。libmp(3LIB) を参照してください。
名前と値の組み合せのライブラリ libnvpair を構成する関数です。このライブラリは共有オブジェクト libnvpair.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、 cc コマンド行で -lnvpair を指定します。libnvpair(3LIB) を参照してください。
PAM (Pluggable Authentication Module) ライブラリ libpam を構成する関数です。このライブラリは共有オブジェクト libpam.so、アーカイブ libpam.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lpam を指定します。libpam(3LIB) を参照してください。
PICL ライブラリ libpicl を構成する関数です。このライブラリは共有オブジェクト libpicl.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lpicl を指定します。libpicl(3LIB)libpicl(3LIB) および libpicl(3PICL) を参照してください。
PICL プラグインライブラリ libpicltree を構成する関数です。このライブラリは共有オブジェクト libpicltree.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lpicltree を指定します。libpicltree(3LIB)libpicltree(3LIB) およびlibpicltree(3PICLTREE) を参照してください。
リモート共有メモリー librsm を構成する関数です。このライブラリは共有オブジェクト librsm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lrsm を指定します。librsm(3LIB) を参照してください。
ファイルアクセス制御ライブラリ libsec を構成する関数です。このライブラリは共有オブジェクト libsec.so、アーカイブ libsec.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsec を指定します。libsec(3LIB) を参照してください。
セキュリティ属性データベースライブラリ libsecdb を構成する関数です。このライブラリは共有オブジェクト libsecdb.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsecdb を指定します。libsecdb(3LIB) を参照してください。
SNMP ライブラリ libdssagent と libdssasnmp を構成する関数です。この 2 つのライブラリは、それぞれ共有オブジェクト libssagent.so、libssasnmp.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -lssagent または -lssasnmp を指定します。libssagent(3LIB) を参照してください。
システムイベントライブラリ libsysevent を構成する関数です。このライブラリは共有オブジェクト libsysevent.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsysevent を指定します。libsysevent(3LIB) を参照してください。
TNF ライブラリ libtnf、libtnfctl、libtnfprobe を構成する関数です。この 3 つのライブラリは、それぞれ共有オブジェクト libtnf.so、libtnfctl.so、libtnfprobe.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -ltnf、-ltnfctl、-ltnfprobe のいずれかを指定します。libtnfctl(3TNF) および libtnfctl(3LIB) を参照してください。
ボリューム管理ライブラリ libvolmgt を構成する関数です。このライブラリは共有オブジェクト libvolmgt.so、アーカイブ libvolmgt.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lvolmgt を指定します。libvolmgt(3LIB)を参照してください。
製品インストールレジストリのライブラリ libwsreg を構成する関数です。このライブラリは、共有オブジェクト libwsreg.so として実装されていますが、C コンパイラシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lwsreg オプションを指定してください。libwsreg(3LIB) を参照してください。
マシンのバイトに適合するビットパターンを、1 文字と解釈することができます。ただし、言語によっては、1 文字に 1 バイト以上必要で、複数バイトで表現されるものもあります。
NULL 文字とは、値が 0 の文字のことです。C 言語では、便宜上この文字を \0 と表します。文字の並び (シーケンス) のことを文字配列と言います。最後の文字が NULL 文字になっている文字の並びのことを NULL 終了文字配列 (文字列) と言います。また、NULL 文字だけを含む文字配列のことを NULL 文字列と言います。0 をポインタにキャストすることによって得られる値は NULL ポインタと呼ばれています。C 言語では、この値は有効なポインタと一致しません。このため、ポインタを返す関数のほとんどは、NULL を返すことによってエラーを示します。NULL マクロは <stdio.h> で定義されています。size_t の型は適切なヘッダーの中に定義されています。
MT レベルのライブラリの詳細については attributes(5) を参照してください。
通常 /usr/include
通常 /usr/lib (32 ビット) または /usr/lib/sparcv9 (64 ビット)
ar(1)、cc(1B)、 ld(1)、fork(2)、 intro(3)、stdio(3C)、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 は単精度小数点の最大値を表します。
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 とみなしてください。
早期のバインディングを可能にするためは、環境変数 LD_BIND_NOW の値を非 NULL 値に設定してください。詳細については『リンカーとライブラリ』の再配置に関する説明を参照してください。
ここで説明する関数、外部変数、マクロは、ユーザープログラムの中で再定義しないでください。他の名前を再定義してもこれらのライブラリの動作に影響を与えませんが、同じ名前を再定義すると、インクルードされているヘッダーの宣言と衝突してしまいます。
INCDIR の中にあるヘッダーは、このマニュアルページで説明するほとんどの関数のプロトタイプを提供します。関数のプロトタイプとは、引数の型を含む関数宣言のことです。関数のプロトタイプを使用すると、ユーザーのプログラムの中で使用されている関数の使用法が間違っていないか、コンパイラでチェックすることができます。コンパイラの代わりに lint プログラムチェッカーを使用することもできます。lint は、ヘッダーが #include 文でインクルードされていないことを検出すると、この矛盾を報告します。セクション 2、3C、3S の定義は自動的にチェックされます。その他の定義をチェックするには、lint に -l オプションを指定します。たとえば、 libm の定義をチェックするには -lm を指定します。できるだけ lint を使用するようにしてください。詳細は、『プロファイリングツール』の lint に関する章を参照してください。
「STREAMS」と「ストリーム」の違いには十分気を付けてください。STREAMS とは、ネットワークサービスとデータ通信ドライバの開発をサポートするカーネル機構の一種であり、ユーティリティルーチン、カーネル機能、データ構造体で構成されています。一方、ストリーム とは、STREAMS に関連するバッファリングで使用されるファイルのことです。ストリーム は <stdio.h> の中で FILE 型へのポインタとして定義されています。
各要素の詳細な定義では、実装に固有のシンボリック名を参照しなければならない場合があります。ただし、必ずしもアプリケーションプログラムで使用できるようにする必要はありません。こうしたシンボリック名の多くは、境界の条件やシステムの制限を記述するものです。
このセクションでは、分かりやすくするために、このような実装固有の値をシンボリック名にしています。このようなシンボリック名は必ず中括弧 ( { } ) で囲まれ、ヘッダーを使ってアプリケーションからアクセスできる実装固有の定数のシンボリック名と区別されます。中括弧で囲まれているシンボリック名は、特定のシステムの文書中で定義されていることもありますが、ヘッダーを使用することによってアプリケーションプログラムから必ずしもアクセスできるわけではありません。
一般には、移植可能なアプリケーションプログラムコードの中で、このようなシンボリック名が参照されていてはなりません。たとえば、あるアプリケーションプログラムで、あるルーチンに提供された引数リストの長さが {ARG_MAX} より大きいかどうかをテストしてはなりません。
名前 | 機能説明 | 定義 | MT レベルのライブラリ | ファイル | 関連項目 | 診断 | マルチスレッドアプリケーションに関する注意事項 | リアルタイムアプリケーション | 注意事項