プログラミングインタフェース

POSIX プロセス間通信

POSIX プロセス間通信 (IPC) は System V プロセス間通信の変形です。 POSIX プロセス間通信は Solaris 7 で導入されました。System V オブジェクトと同様に、POSIX IPC オブジェクトは、所有者、所有者のグループ、およびその他に読み取り権と書き込み権がありますが、実行権はありません。POSIX IPC オブジェクトの所有者が、そのオブジェクトの所有者を変更する方法はありません。POSIX IPC には、次のような機能が含まれます。

System V IPC インタフェースとは異なり、POSIX IPC インタフェースはすべてマルチスレッドに対して安全です。

POSIX メッセージ

次の表に、POSIX メッセージ待ち行列インタフェースの一覧を示します。

表 5–2 POSIX メッセージ待ち行列インタフェース

インタフェース名 

種類 

mq_open(3RT) 名前付きメッセージ待ち行列に接続する。指定によっては作成する
mq_close(3RT) 開いているメッセージ待ち行列への接続を終了する
mq_unlink(3RT) 開いているメッセージ待ち行列への接続を終了し、最後のプロセスが待ち行列を閉じるときに待ち行列を削除する
mq_send(3RT) メッセージを待ち行列に入れる
mq_receive(3RT) 最も古い最高優先順位メッセージを待ち行列から受け取る (削除する)
mq_notify(3RT) メッセージが待ち行列で使用できることをプロセスまたはスレッドに通知する
mq_setattr(3RT)、mq_getattr(3RT) メッセージ待ち行列属性を設定または取得する

POSIX セマフォ

POSIX セマフォは、System V セマフォより軽量です。POSIX セマフォ構造体は 25 個までのセマフォの配列ではなく、1 つのセマフォだけを定義します。

次の表に、POSIX セマフォインタフェースの一覧を示します。

表 5–3 POSIX セマフォインタフェース

sem_open(3RT)

名前付きセマフォに接続する。指定によっては作成する 

sem_init(3RT)

名前なしセマフォ構造体を初期化する (呼び出し元プログラムの内部で行われるのため、名前付きセマフォではない) 

sem_close(3RT)

開いているセマフォへの接続を終了する 

sem_unlink(3RT)

開いているセマフォへの接続を終了し、最後のプロセスがセマフォを閉じるときにセマフォを削除する 

sem_destroy(3RT)

名前なしセマフォ構造体を初期化する (呼び出し元プログラムの内部で行われるのため、名前付きセマフォではない) 

sem_getvalue(3RT)

セマフォの値を指定された整数にコピーする 

sem_wait(3RT)、sem_trywait(3RT)

セマフォがほかのプロセスによって保持されている場合に、ブロックするかエラーを返す 

sem_post(3RT)

セマフォの数を増やす 

POSIX 共有メモリー

POSIX 共有メモリーは、実際にはマッピングされているメモリーの変形です (詳細は、マッピングの作成と使用を参照)。主な違いは、以下のとおりです。

shm_open(3RT) のオプションは、open(2) で提供されているオプションの数よりかなり少なくなっています。