ACCEPT

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

accept - ソケット上の接続を受け入れる  

索引

ライブラリ

Lb libc  

索引

書式

In sys/types.h In sys/socket.h Ft int Fn accept int s struct sockaddr * restrict addr socklen_t * restrict addrlen  

索引

解説

引数 Fa s は socket(2) で作成され、 bind(2) でアドレスにバインドされ、 listen(2) も済ませて接続を待ち受けているソケットです。 Fn accept システムコールは、待ち行列上の最初の接続要求を取り出し、 新しいソケットを作成し、オリジナルのソケット Fa s から O_NONBLOCK プロパティの状態を継承した そのソケットへ新しいファイル記述子を割り当てます。

接続要求が待ち行列上に存在せず、 しかもオリジナルのソケットが非ブロッキングとマークされていない場合、 Fn accept は接続要求があるまで呼び出し側をブロックします。 オリジナルのソケットが非ブロッキングとマークされており、 しかも待ち行列に接続要求が存在しない場合、 Fn accept は後述のようにエラーを返します。 接続が成立したソケットは、それ以上の接続を受け入れるために 使用できません。 オリジナルのソケット Fa s は開いたままです。

引数 Fa addr は結果の引数で、 通信レイヤに既知の接続エンティティのアドレスで埋められます。 Fa addr 引数の正確な形式は通信が行われるドメインで決まります。 アドレス情報が要望されない場合には、 Fa addr にヌルポインタを指定することができます。 この場合は Fa addrlen は使用されず、これもヌルであるべきです。 そうでない場合には Fa addrlen は、値と結果の引数です。 これは最初は Fa addr が指す空間のサイズを含んでいなければなりません。 戻り時には、返されるアドレスの実際の長さ (バイト単位) を含むことになります。 この呼び出しは、コネクションをベースとしたソケットタイプ、 現在では SOCK_STREAM とともに使用されます。

読取りでソケットを select(2) することによって、 Fn accept するソケットを選ぶことができます。

ISO または DATAKIT のような明瞭な確認が必要な特定のプロトコルでは、 Fn accept は単に次の接続要求を待ち行列から除くだけで、 確認は行わないと考えられます。 確認は、新しいファイル記述子についての 通常の読取りまたは書込みによって行うことができ、 拒絶は新しいソケットを閉じる事によって実現できます。

ある種のアプリケーションにおいては、内向きの接続を accept_filter9 で前処理することにより、性能が向上するかもしれません。  

索引

戻り値

システムコールはエラーがあった場合 -1 を返します。 処理が正常に完了した場合、受け付けたソケットの 記述子である非負整数を返します。  

索引

エラー

Fn accept システムコールは次の場合に失敗します:

Bq Er EBADF
記述子が有効ではありません。
Bq Er EINTR
Fn accept 操作が割り込まれました。
Bq Er EMFILE
プロセスの記述子テーブルが満杯です。
Bq Er ENFILE
システムファイルテーブルが満杯です。
Bq Er ENOTSOCK
記述子がファイルを参照しておりソケットではありません。
Bq Er EINVAL
listen(2) がソケット記述子に対して呼び出されていません。
Bq Er EFAULT
Fa addr 引数がユーザアドレス空間の書込み可能な部分にありません。
Bq Er EWOULDBLOCK
ソケットが非ブロッキングとマークされ、さらに 受け付けるべき接続要求が存在しません。
Bq Er ECONNABORTED
接続要求が到着しましたが、待ち行列で待機している 間に閉じてしまいました。

 

索引

関連項目

bind(2), connect(2), getpeername(2), listen(2), select(2), socket(2), accept_filter9  

索引

歴史

Fn accept システムコールは BSD 4.2 で登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
エラー
関連項目
歴史

jman



Time: 07:06:24 GMT, January 12, 2009