epoll_create, epoll_create1 - epoll
  ファイルディスクリプタをオープンする
#include <sys/epoll.h>
int epoll_create(int size);
int epoll_create1(int flags);
epoll_create()は 
epoll(7)
  インスタンスを作成する。
  Linux 2.6.8 以降では、 
size
  引き数は無視されるが、
  0 より大きな値で
  なければならない。下記の「注意」を参照。
epoll_create() は、新しい epoll
  インスタンスを参照するファイルディスクリプタを返す。
  このファイルディスクリプタは、その後の
  
epoll
  インタフェースの呼び出しに使われる。
  もう必要でなくなった場合は、
  
epoll_create()
  で返されたファイルディスクリプタは
  
close(2)
  を使ってクローズされるべきである。
  ある epoll
  インスタンスを参照する全てのファイルディスクリプタがクローズされると、
  カーネルはそのインスタンスを破壊して、対応するリソースを解放し、
  再使用できるようにする。
epoll_create1()¶
epoll_create1() は、 
flags が 0
  の場合、現在では使われていない
  
size
  引き数がなくなっている点を除けば
  
epoll_create() と同じである。
  
flags
  に以下の値をビット毎の論理和
  (OR) で指定することで、
  異なる動作をさせることができる。
  - EPOLL_CLOEXEC
 
  - 新しいファイルディスクリプタに対して
      close-on-exec ( FD_CLOEXEC)
      フラグをセットする。
      このフラグが役に立つ理由については、
      open(2) の O_CLOEXEC
      フラグの説明を参照のこと。
 
返り値¶
成功すると、これらのシステムコールは
  非負のファイルディスクリプタを返す。
  エラーの場合、-1
  を返し、 
errno
  にエラーを示す値を設定する。
エラー¶
  - EINVAL
 
  - size が正でない。
 
  - EINVAL
 
  - (epoll_create1()) flags
      に無効な値が指定された。
 
  - EMFILE
 
  - /proc/sys/fs/epoll/max_user_instances
      によって指定されている、epoll
      インスタンスのユーザー単位の制限に達した。
      更なる詳細については
      epoll(7)
    を参照のこと。
 
  - ENFILE
 
  - オープンされたファイルの総数がシステム制限に達した。
 
  - ENOMEM
 
  - カーネルオブジェクトを作成するのに十分なメモリがなかった。
 
バージョン¶
epoll_create() はカーネル 2.6
  で追加された。
  ライブラリによるサポートは
  glibc バージョン 2.3.2
  以降で提供されている。
epoll_create1() はカーネル 2.6.27
  で追加された。
  ライブラリによるサポートは
  glibc バージョン 2.9
  以降で提供されている。
epoll_create() は Linux
  独自である。
初期の 
epoll_create()
  の実装では、 
size
  引き数は、呼び出し元が
  
epoll
  インスタンスに追加しようとするファイルディスクリプタ数をカーネルに教えるのに
  使われていた。カーネルはこの情報をイベントの情報を格納する内部データ構造に最
  初に割り当てる大きさを決める際のヒントとして使用していた
  ( 
size で渡された
  ヒントよりも使用量が大きくなった場合には、必要に応じてカーネルは追加で領域を
  割り当てる)。
現在では、このヒントはもはや必要なくなっている
  (カーネルはヒントなしで必要な
  データ構造のサイズを動的に変更する)
  が、今も 
size には 0
  より大きい値を
  指定しなければならない。これは、
  
epoll
  を使うアプリケーションが古いカーネル
  で実行される際の後方互換性を保証するためである。
関連項目¶
close(2), 
epoll_ctl(2), 
epoll_wait(2), 
epoll(7)
この文書について¶
この man ページは Linux 
man-pages
  プロジェクトのリリース
  3.65 の一部
  である。プロジェクトの説明とバグ報告に関する情報は
  
http://www.kernel.org/doc/man-pages/
  に書かれている。