スポンサーリンク

UNIX(4) FreeBSD カーネルインタフェースマニュアル UNIX(4)

名称

unix − UNIX ドメインプロトコルファミリ

書式

#include <sys/types.h>
#include <sys/un.h>

解説

UNIX ドメインプロトコルファミリは、通常の socket(2) メカニズムを用いる ローカルな (マシン上の) プロセス間通信を提供するプロトコル群です。 UNIX ドメインファミリは SOCK_STREAM および SOCK_DGRAM ソケットタイプをサポート し、アドレッシングにファイルシステムのパス名を使います。

アドレッシング

UNIX ドメインのアドレスは、最大 104 文字の可変長のファイルシステムパス名 です。インクルードファイル ⟨sys/un.h⟩ がこのアドレスを定義しています:

      struct sockaddr_un {

u_char

sun_len;
u_char

sun_family;
char

sun_path[104];

};

bind(2) で UNIX ドメインソケットに名前をバインドすることにより、ファイル システムにソケットファイルが作成されます。このファイルはソケットがクロー ズされても削除されません。削除には unlink(2) を使わなければなりません。

UNIX ドメインプロトコルファミリは、ブロードキャストアドレッシングや入力 メッセージに対するどのような形態の ‘‘ワイルドカード’’ マッチングもサポー トしません。全てのアドレスは他の UNIX ドメインソケットの絶対あるいは相対 パス名です。また、パス名を参照するときには、通常のファイルシステムのアク セスコントロールが適用されます。例えば connect(2) あるいは sendto(2) の終 点は書き込み可能でなければなりません。

プロトコル

UNIX ドメインプロトコルファミリは SOCK_STREAM および SOCK_DGRAM アブスト ラクションをサポートするシンプルなトランスポートプロトコルから成ります。 また、 SOCK_STREAM ソケットは、 sendmsg(2) および recvmsg(2) へ与える引数 の中の msg_control フィールドの使用を通じて UNIX ファイル記述子の通信をサ ポートします。

任意の正当な記述子をメッセージ中に含めて送信可能です。渡されるファイル記 述子はインクルードファイル ⟨sys/socket.h⟩ で定義される struct cmsghdr を 用いて記述されます。そのメッセージのタイプは SCM_RIGHTS であり、メッセー ジのデータ部は渡されるファイル記述子を表現する整数の配列です。渡される記 述子の数はメッセージの length フィールドで定義されています。 length フィールドはヘッダのサイズとファイル記述子の配列のサイズの合計です。

受信された記述子は、 dup(2) の呼び出しによって生成されたかのような、送信 者の記述子の 複製です。 fcntl(2) でセットされたプロセス毎の記述子フラグ は、受信者には 渡されません。配送を待っている、あるいは意図的に受け取られ ない記述子は、終点ソケットがクローズされたときにシステムによって自動的に クローズされます。

関連項目

socket(2), intro(4)

"

        An Introductory 4.3 BSD Interprocess Communication Tutorial",                                                                        PS1,     7.
"        An Advanced 4.3 BSD Interprocess Communication Tutorial",                                                                    PS1,                                                                           8.
FreeBSD 10.0                     June 9, 1993                     FreeBSD 10.0
スポンサーリンク