名前 | 機能説明 | 定義 | マルチスレッドアプリケーション | リアルタイムアプリケーション | ファイル | 関連項目 | 『診断』 | 注意事項
このセクションでは、さまざまな Solaris ライブラリにある関数のうち、直接 UNIX システムのプリミティブを呼び出す関数 (このマニュアルページのセクション 2 で説明) 以外の関数について説明します。関数の宣言は、各ページで説明されている #include ファイルから取得できます。このセクションの説明はライブラリ別になっています。各ライブラリは、セクション番号の後ろに入っているライブラリ名 (ライブラリの省略名) で識別できます。関連のあるライブラリのコレクションは、下記に示すように大きく 5 つのボリュームに分かれており、6 番目のボリュームは、この 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容説明になっています。ここでは、まず、この 6 番目のボリュームから説明します。
このボリュームでは、他の 5 つのボリュームで説明されている関数、マクロ、外部変数が使用する共有ライブラリとヘッダーの内容について説明します。
このセクションで説明するライブラリはどれも、共有オブジェクトとして実装されています。
共有オブジェクトの説明には、共有オブジェクトの共有インタフェースを定義する大域シンボルの定義が含まれていることがあります (例: SUNW_1.1)。このほかのインタフェースは、共有オブジェクトに含まれている可能性があります (例: SUNW_private.1.1)。共有インタフェースは、アプリケーション開発用に、安定度の高い専用のシンボルセットを提供します。専用インタフェースは内部使用のみであり、随時変更される可能性があります。
このセクションで説明する SunOS/BSD 互換ライブラリは、共有オブジェクトとして実装されています。上記の (3LIB) を参照してください。
このセクションで説明するヘッダーは、関数、マクロ、外部変数が使用するヘッダーです。ヘッダーには、関数のプロトタイプ、記号定数の定義、共通の構造体、プリプロセッサマクロ、定義済みの型が含まれています。残りの 5 つのボリュームで説明されている各関数は、この関数を使用するためにアプリケーションに含めなければならないヘッダーを指定します。多くの場合、必要なヘッダーは 1 つだけです。このようなヘッダーは、アプリケーション開発システムに配置されます。実行システムに配置する必要はありません。
このボリュームで説明する関数は、アプリケーション開発の基本となるコア C ライブラリ関数です。
セクション 2 の関数とともに標準 C ライブラリ libc を構成する関数です。libc は、C コンパイルシステムにより自動的にリンクされます。標準 C ライブラリは共有オブジェクト libc.so として実装されています。libc(3LIB) を参照してください。 『ANSI C Programmer's Guide』の「C Compilation System」の章にも参考になる情報があります。規格に合致した環境では、動作が異なる関数もあります。こうした動作については、個々のマニュアルページで説明されています。standards(5) を参照してください。
libpthread ライブラリと libthread ライブラリは libc へのフィルタライブラリであり、マルチスレッドアプリケーションを構築するために使用します。libpthread は POSIX (standards(5) を参照) スレッドインタフェースを実装し、libthread は Solaris スレッドインタフェースを実装します。下記のマルチスレッドアプリケーションを参照してください。
スレッドデバッグライブラリ libc_db を構成する関数です。このライブラリは共有オブジェクト libc_db.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。cc コマンド行で -lc_db を指定すると、このライブラリにリンクできます。libc_db(3LIB) を参照してください。
libmalloc、libbsdmalloc、libmapmalloc、libmtmalloc という複数のメモリー割り当てライブラリを構成する関数です。これらのライブラリはそれぞれ共有オブジェクト libmalloc.so、libbsdmalloc.so、libmapmalloc.so、libmtmalloc.so および libumem.so として実装されています。このライブラリ群は、C コンパイルシステムによって自動的にはリンクされません。libmalloc、libbsdmalloc、libmapmalloc、libmtmalloc とリンクするには、それぞれ -lmalloc、-lbsdmalloc、-lmapmalloc、-lmtmalloc の 各オプションを指定します。libmalloc(3LIB)、libbsdmalloc(3LIB)、 libmapmalloc(3LIB)、libmtmalloc(3LIB) を参照してください。
BSD 関数を含むソース互換ライブラリを構成する関数です。共有オブジェクト libucb.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリは /usr/ucb サブディレクトリにあるため、cc コマンド行で -lucb を指定することによってリンクできます。このライブラリのヘッダーは、/usr/ucbinclude に入っています。libucb(3LIBUCB) を参照してください。
このボリュームで説明する関数は、さまざまなネットワーキングライブラリを構成します。
このライブラリ中の関数は、Generic Security Services API (GSS-API) ライブラリを構成するルーチンです。このライブラリは共有オブジェクト libgss.so として実装されています。ただし、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lgss を指定します。libgss(3LIB) を参照してください。
軽量ディレクトリアクセスプロトコルライブラリを構成する関数です。このライブラリは共有オブジェクト libldap.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lldap を指定します。ldap(3LDAP) を参照してください。
ネットワークサービスライブラリ libnsl を構成する関数です。このライブラリは共有オブジェクト libnsl.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lnsl を指定します。libnsl(3LIB) を参照してください。
基本ネットワーキング関数の多くは、X/Open ネットワーキングインタフェースライブラリにも入っています。libxnet インタフェースの詳細については、下記のセクション (3XNET) を参照してください。
リモート非同期呼び出しライブラリ librac を構成する関数です。このライブラリは共有オブジェクト librac.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lrac を指定します。librac(3LIB) を参照してください。
リゾルバライブラリ libresolv を構成する関数です。このライブラリは共有オブジェクト libresolv.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lresolv を指定します。libresolv(3LIB) を参照してください。
遠隔手続き呼び出しライブラリ librpcsvc と librpcsoc を構成する関数です。librpcsoc は互換性の提供のみを目的としたライブラリなので、これには新しいアプリケーションをリンクしないでください。この 2 つのライブラリは、それぞれ共有オブジェクト librpcsvc.so と librpcsoc.so として実装されています (librt(3LIB) 参照)。どちらのライブラリも、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -lrpcsvc か -lrpcsoc を指定します。librpcsvc(3LIB) および librpcsoc(3LIBUCB) を参照してください。
SLP (サービスロケーションプロトコル, Service Location Protocol) ライブラリ libslp を構成する関数です。このライブラリは、共有オブジェクト libslp.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。libslp(3LIB) を参照してください。
シンプル認証とセキュリティ層 (SASL: Simple Authentication and Security Layer) ライブラリ libsasl を構成する関数です。SASL は、接続指向のネットワークアプリケーションが主に認証に使用するセキュリティのフレームワークです。言い換えると、SASL は、ネットワークアプリケーションといくつかのセキュリティ機構を接合する接着剤の層です。したがって、アプリケーションはお互いに認証できるとともに、データの暗号化などの追加のセキュリティサービスも利用できます。接着剤の層として、SASL は、セキュリティ機構に固有なインタフェースをアプリケーションに見せないため、新しいセキュリティ機構を実装しても、柔軟かつ迅速に移植できます。
libsasl は、アプリケーションに対しては API を提供し、さまざまなプラグインに対しては SPI を提供します。このライブラリにリンクするには、cc コマンド行で -lsasl を指定します。libsasl(3LIB) を参照してください。
ソケットライブラリ libsocket を構成する関数です。このライブラリは、共有オブジェクト libsocket.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsocket を指定します。libsocket(3LIB) を参照してください。
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 として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcurses を指定します。libcurses(3LIB) を参照してください。
forms ライブラリ libform を構成する関数です。このライブラリは共有オブジェクト libform.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lform を指定します。libform(3LIB) を参照してください。
menus ライブラリ libmenu を構成する関数です。このライブラリは共有オブジェクト libmenu.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmenu を指定します。libmenu(3LIB) を参照してください。
panels ライブラリ libpanel を構成する関数です。このライブラリは共有オブジェクト libpanel.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lpanel を指定します。libpanel(3LIB) を参照してください。
グラフィックスライブラリ libplot を構成する関数です。このライブラリは共有オブジェクト libplot.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lplot を指定します。libplot(3LIB) を参照してください。
/usr/xpg4/lib/libcurses.so にある 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) を参照してください。
このボリュームで説明する関数は、特化されたさまざまなライブラリを構成します。構成されるライブラリは、次に示す限りではありません。
基本セキュリティライブラリ libbsm を構成する関数です。このライブラリは共有オブジェクト libbsm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lbsm を指定します。libbsm(3LIB) を参照してください。
構成管理ライブラリ libcfgadm を構成する関数です。このライブラリは共有オブジェクト libcfgadm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcfgadm を指定します。libcfgadm(3LIB) を参照してください。
契約管理ライブラリ libcontract を構成する関数です。このライブラリは共有オブジェクト libcontract.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -lcontract を指定します。libcontract(3LIB) を参照してください。
CPU パフォーマンスカウンタライブラリ libcpc およびプロセスコンテキストライブラリ libpctx を構成する関数です。これらのライブラリはそれぞれ共有オブジェクト libcpc.so および libpctx.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lcpc を指定します。libcpc(3LIB) および libpctx(3LIB)を参照してください。
直接アクセス転送ライブラリ libdevid を構成する関数です。このライブラリは共有オブジェクト libdat.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -ldat を指定します。libdat(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 として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lelf を指定します。libelf(3LIB) を参照してください。
拡張アカウンティングアクセスライブラリ libexacct およびプロジェクトデータベースアクセスライブラリ libproject を構成する関数です。これらのライブラリはそれぞれ、共有オブジェクト libexacct.so および libproject.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらのライブラリにリンクするには、cc コマンド行で -lexacct または -lproject を指定します。libexacct(3LIB) および libproject(3LIB) を参照してください。
文字列のパターンマッチングやパス名の操作を行うライブラリ libgen を構成する関数です。このライブラリは共有オブジェクト libgen.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lgen を指定します。libgen(3LIB) を参照してください。
共通ファイバチャネル HBA 情報ライブラリ libhbaapi を構成する関数です。このライブラリは共有オブジェクト libhbaapi.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -lhbaapi を指定します。libhbaapi(3LIB) を参照してください。
カーネル統計情報ライブラリを構成する関数です。このライブラリは共有オブジェクト libkstat.so、アーカイブ libkstat.a として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lkstat を指定します。libkstat(3LIB) を参照してください。
カーネルの仮想メモリーライブラリへのアクセスを許可する関数です。このライブラリは共有オブジェクト libkvm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lkvm を指定します。libkvm(3LIB) を参照してください。
レイアウトサービスライブラリを構成する関数です。このライブラリは共有オブジェクト liblayout.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -llayout を指定します。liblayout(3LIB) を参照してください。
ローカリティグループライブラリを構成する関数です。このライブラリは共有オブジェクト liblgrp.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -llgrp を指定します。liblgrp(3LIB) を参照してください。
数学ライブラリ libm を構成する関数です。このライブラリは共有オブジェクト libm.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lm を指定します。
ユーザーのメールボックス管理ライブラリ libmail を構成する関数です。このライブラリは共有オブジェクト libmail.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmail を指定します。
整数型数学ライブラリ libmp を構成する関数です。このライブラリは共有オブジェクト libmp.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lmp を指定します。libmp(3LIB) を参照してください。
名前と値の組み合せのライブラリ libnvpair を構成する関数です。このライブラリは共有オブジェクト libnvpair.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lnvpair を指定します。libnvpair(3LIB) を参照してください。
PAM (Pluggable Authentication Module) ライブラリ libpam を構成する関数です。このライブラリは共有オブジェクト libpam.so として実装されていますが、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) を参照してください。
オブジェクトキャッシュ用メモリー割り当てライブラリ libscf を構成する関数です。このライブラリは共有オブジェクト libscf.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -lscf を指定します。libscf(3LIB) を参照してください。
ファイルアクセス制御ライブラリ libsec を構成する関数です。このライブラリは共有オブジェクト libsec.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsec を指定します。libsec(3LIB) を参照してください。
セキュリティ属性データベースライブラリ libsecdb を構成する関数です。このライブラリは共有オブジェクト libsecdb.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsecdb を指定します。libsecdb(3LIB) を参照してください。
SNMP ライブラリ libssagent と libssasnmp を構成する関数です。この 2 つのライブラリは、それぞれ共有オブジェクト libssagent.so、libssasnmp.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -lssagent または -lssasnmp を指定します。libssagent(3LIB) を参照してください。
システムイベントライブラリ libsysevent を構成する関数です。このライブラリは共有オブジェクト libsysevent.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。このライブラリにリンクするには、cc コマンド行で -lsysevent を指定します。libsysevent(3LIB) を参照してください。
対話型コマンド行入力ライブラリ libtecla を構成する関数です。このライブラリは共有オブジェクト libtecla.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -ltecla を指定します。libtecla(3LIB) を参照してください。
TNF ライブラリ libtnf、libtnfctl、libtnfprobe を構成する関数です。この 3 つのライブラリは、それぞれ共有オブジェクト libtnf.so、libtnfctl.so、libtnfprobe.so として実装されていますが、C コンパイルシステムによって自動的にはリンクされません。これらにリンクするには、cc コマンド行で -ltnf、-ltnfctl、-ltnfprobe のいずれかを指定します。libtnfctl(3TNF) および libtnfctl(3LIB) を参照してください。
普遍一意な識別子ライブラリ libuuid を構成する関数です。このライブラリは共有オブジェクト libuuid.so として実装されていますが、C コンパイルシステムによっては自動的にリンクされません。このライブラリにリンクするには、cc コマンド行で -luuid を指定します。libuuid(3LIB) を参照してください。
ボリューム管理ライブラリ libvolmgt を構成する関数です。このライブラリは共有オブジェクト libvolmgt.so として実装されていますが、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 の型は適切なヘッダーの中に定義されています。
POSIX スレッドと Solaris スレッドは両方とも、同じアプリケーション内で使用できます。これらのスレッドはお互いに完全な互換性がありますが、ほかの POSIX 適合環境への移植性が保証されるのは POSIX スレッドだけです。
libpthread(3LIB) ライブラリと libthread(3LIB) ライブラリは、libc(3LIB) へのフィルタとして実装されます。
マルチスレッドアプリケーションをコンパイルするときには、コマンド行で -mt オプションを指定する必要があります。
マルチスレッドアプリケーションは -lthread とリンクする必要はありません。 fork(2) に対する POSIX 意味論が必要でない限り、アプリケーションは -lpthread とリンクする必要はありません。 アプリケーションが -lpthread とリンクしたとき、fork() の呼び出しでは、すべてのスレッドをフォークするというデフォルトの動作ではなく、fork1(2)r の動作が想定されます。
POSIX 適合のアプリケーションをコンパイルするとき、_POSIX_C_SOURCE オプションまたは __POSIX_PTHREAD_SEMANTICS オプションのどちらかをコマンド行で指定する必要があります。POSIX.1c に適合するアプリケーションには、次のように、_POSIX_C_SOURCE オプションに 199506L 以上の値を定義します。
cc -mt [ flag... ] file... -D_POSIX_C_SOURCE=199506L -lpthread
Solaris の fork() と fork1() を区別する POSIX の動作の場合、次のようにコンパイルします。
cc -mt [ flag... ] file... -D_POSIX_PTHREAD_SEMANTICS
Solaris スレッドの動作の場合、次のようにコンパイルします。
cc -mt [ flag... ] file...
アプリケーションの安全性を保証するため、安全でないインタフェースはメインスレッドだけから呼び出すようにします。
MT 安全なインタフェースについては、各関数やライブラリのマニュアルページの「属性」の項目に記述されています (attributes(5) を参照)。インタフェースが MT 安全であることがマニュアルページに明示的に述べられていない場合、そのインタフェースは安全でないことを想定する必要があります。
早期のバインディングを可能にするためは、環境変数 LD_BIND_NOW の値を非 NULL 値に設定してください。詳細については『リンカーとライブラリ』の再配置に関する説明を参照してください。
通常は /usr/include
通常は /lib または /usr/lib (32ビットの場合) あるいは、/lib/64 または /usr/lib/64 (64ビットの場合) です。
共有ライブラリ
ar(1), cc(1B), ld(1), fork(2), intro(3), stdio(3C), attributes (5), standards(5)
『プロファイリングツール』
『ANSI C Programmer's Guide』
浮動小数点の値を戻す関数の場合、エラーの処理方法はコンパイルモードによって変わります。-Xt オプション (デフォルト) を cc コマンド行で指定している場合、指定した引数に対して関数が定義されていないとき、あるいは、値が表現不可能なとき、これらの関数は、従来の 0、±HUGE、または NaN を戻します。ところが、-Xa オプションまたは -Xc オプションを指定している場合、これらの関数は、±HUGE ではなく、±HUGE_VAL を戻します。±HUGE_VAL と HUGE は math.h で定義されており、それぞれ、無限と単一精度の最大数を表します。
ここで説明する関数、外部変数、マクロは、ユーザープログラムの中で再定義しないでください。他の名前を再定義してもこれらのライブラリの動作に影響を与えませんが、同じ名前を再定義すると、インクルードされているヘッダーの宣言と衝突してしまいます。
INCDIR の中にあるヘッダーは、このマニュアルページで説明するほとんどの関数のプロトタイプを提供します。関数のプロトタイプとは、引数の型を含む関数宣言のことです。関数のプロトタイプを使用すると、ユーザーのプログラムの中で使用されている関数の使用法が間違っていないか、コンパイラでチェックすることができます。コンパイラの代わりに lint プログラムチェッカーを使用することもできます。lint は、ヘッダーが #include 文でインクルードされていないことを検出すると、この矛盾を報告します。セクション 2、3C、3S の定義は自動的にチェックされます。その他の定義をチェックするには、lint に -l オプションを指定します。たとえば、libm の定義をチェックするには -lm を指定します。できるだけ lint を使用するようにしてください。詳細は、『プロファイリングツール』の lint に関する章を参照してください。
「STREAMS」と「ストリーム」の違いには十分気を付けてください。STREAMS とは、ネットワークサービスとデータ通信ドライバの開発をサポートするカーネル機構の一種であり、ユーティリティルーチン、カーネル機能、データ構造体で構成されています。一方、ストリーム とは、STREAMS に関連するバッファリングで使用されるファイルのことです。ストリーム は <stdio.h> の中で FILE 型へのポインタとして定義されています。
各要素の詳細な定義では、実装に固有のシンボリック名を参照しなければならない場合があります。ただし、必ずしもアプリケーションプログラムで使用できるようにする必要はありません。こうしたシンボリック名の多くは、境界の条件やシステムの制限を記述するものです。
このセクションでは、分かりやすくするために、このような実装固有の値をシンボリック名にしています。このようなシンボリック名は必ず中括弧 ( { } ) で囲まれ、ヘッダーを使ってアプリケーションからアクセスできる実装固有の定数のシンボリック名と区別されます。中括弧で囲まれているシンボリック名は、特定のシステムの文書中で定義されていることもありますが、ヘッダーを使用することによってアプリケーションプログラムから必ずしもアクセスできるわけではありません。
一般には、移植可能なアプリケーションプログラムコードの中で、このようなシンボリック名が参照されていてはなりません。たとえば、あるアプリケーションプログラムで、あるルーチンに提供された引数リストの長さが {ARG_MAX} より大きいかどうかをテストしてはなりません。
X/Open XFN 標準に基づいたフェデレーテッドネーミングサービスは、Solaris オペレーティングシステムの将来のリリースではサポートされない可能性があります。
名前 | 機能説明 | 定義 | マルチスレッドアプリケーション | リアルタイムアプリケーション | ファイル | 関連項目 | 『診断』 | 注意事項