bind(2) FreeBSD 一般コマンドマニュアル

bind

前のページ 上に戻る 次のページ

bind




書式

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

     int
     bind(int s, const struct sockaddr *addr, socklen_t addrlen);


解説

     bind() は、ローカルプロトコルアドレスをソケットに割り当てます。ソケット
     は、 socket(2) で作成される時にアドレスファミリ空間に存在しますが、プロト
     コルアドレスは割り当てられていません。 bind() はソケットに addr を割り当
     てることを要求します。


     UNIX ドメイン内でのアドレスのバインドによってファイルシステム内にソケット
     が作成されます。これは、必要なくなったときに呼び出し側が (unlink(2) を使
     用して) 削除する必要があります。

     アドレスのバインドで使用される規則は通信ドメイン間で異なります。詳細につ
     いては、セクション 4 のマニュアルエントリを参照してください。


実装に関する注

     非スレッドライブラリでは、 bind() は bind システムコールとして実装されて
     います。

     スレッドライブラリでは、 bind システムコールは _thread_sys_bind() にアセ
     ンブルされ、 bind() は読取りと書込み用に s をロックしてから、
     _thread_sys_bind() を呼び出す関数として実装されています。戻る前に、
     bind() は s をアンロックします。


戻り値

     関数 bind() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が
     返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     bind() 呼び出しは次の場合に失敗します。

     [EAGAIN]           要求を満たすためのカーネルリソースが一時的に利用できま
                        せん。

     [EBADF]            s が有効な記述子ではありません。

     [ENOTSOCK]         s がソケットではありません。

     [EADDRNOTAVAIL]    指定のアドレスがローカルマシンから利用できません。

     [EADDRINUSE]       指定のアドレスは既に使用中です。

     [EACCES]           要求されたアドレスは保護されており、現在のユーザが持っ
                        ているパーミッションはそれにアクセスするのには不適切で
                        す。

     [ELOOP]      パス名を変換するときに検出されたシンボリックリンクが多すぎま
                  す。

     [EIO]        ディレクトリエントリを作成している間、または i ノードを割り
                  振りしている間に入出力エラーが発生しました。

     [EROFS]      指定されたファイルは読取り専用ファイルシステム上にあります。

     [EISDIR]     空のパス名が指定されました。


関連項目

     connect(2), getsockname(2), listen(2), socket(2)


歴史

     bind() 関数は 4.2BSD で登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス