BIND(2) — UNIX Programmer’s Manual
名称
bind − ソケットへ名前を割り当てる
形式
#include <sys/types.h>
#include <sys/socket.h>
bind(s, name, namelen)
int s;
struct sockaddr ∗name;
int namelen;
解説
bind は、 名前のないソケットに名前を 割り当てます。 socket(2) を 用いてソケットが作成されたとき、 そのソケットは、 ネームスペース(アドレスファミリ)には存在していますが、 名前は付与されていません。 bind は、 ソケットに name を割り当るように要求します。
注意事項
UNIXドメイン内で名前の割り当て(binding)を 行うと、 ソケットがファイルシステム内に作られるため、 不要となった際には (unlink(2) を用いて)消去しなければなりません。
この名前の割り当てで使用される規則は、 通信ドメインによって異なります。 詳しい情報については、 セクション4の説明を 参照してください。
リターン値
bind が成功した場合には、 値 0 が返されます。 リターン値 −1 はエラーを 示し、 エラーはグローバル errno に入れられます。
エラー
以下の場合、 bind コールは失敗します。
[EBADF] s が有効なディスクリプタではない。
[ENOTSOCK] s がソケットではない。
[EADDRNOTAVAIL] 指定されたアドレスはローカルマシンからの使用が可能ではない。
[EADDRINUSE] 指定されたアドレスは既に使用されている。
[EINVAL] そのソケットは既にアドレスに bind されている。
[EACCES] 要求されたアドレスは保護されていて、 現ユーザがそれにアクセスするために十分なパーミッションを 持っていない。
[EFAULT] name パラメタがユーザアドレススペースの有効な部分にない。
次のエラーは、 UNIXドメイン内での名前の割り当て(binding)に固有のものです。
[ENOTDIR] パスプレフィックスの構成要素がディレクトリではないものがある。
[EINVAL] パス名に最上位ビットのセットされたキャラクタが含まれている。 (NEWS-OSにはこのエラーはありません。)
[ENAMETOOLONG] パス名の 1 構成要素が 255 バイトを 超えている、 またはパス名全体が 1023 バイトを 超えている。
[ENOENT] パス名のプレフィックス構成要素が存在していないものがある。
[ELOOP] パス名の処理で遭遇したシンボリックリンクの数が多すぎる。
[EIO] ディレクトリエントリの作成中またはiノードの割り当て中に入出力エラーが発生した。
[EROFS] name が読み取り専用のファイルシステム上にある。
[EISDIR] ナルのパス名が指定された。
関連事項
connect(2), listen(2), socket(2), getsockname(2)
NEWS-OSRelease 3.3