名字
epoll_create epoll_create1 - 創建epoll文件描述符
摘要
#include <sys/epoll.h>
int epoll_create(int size);
int epoll_create1(int flags);
描述
epoll_create()
創建一個新的epoll實例。從Linux 2.6.8開始,size參數被忽略,但必須大於零; 看下面的注意事項。
epoll_create()
返回一個指向新創建的epoll實例的文件描述符。 這個文件描述符用於所有後續調用epoll的所有接口。 當不再需要文件描述符 時,使用close關閉。 當所有指向這個epoll實例的文件描述符都關閉時,內核銷燬實例並釋放關聯的重用資源。
epoll_create1()
如果flags爲0,epoll_create1()和刪除了過時size參數的epoll_create()相同。
如果flags中包含以下值就有不同的表現:
EPOLL_CLOEXEC
在文件描述符上面設置執行時關閉(FD_CLOEXEC)標誌描述符。
具體請參考open中對O_CLOEXEC標誌的描述。
返回值
成功時,返回一個非負文件描述符。
發生錯誤時,返回-1,並且將errno設置爲指示錯誤
errno錯誤
EINVAL size不是正數。
EINVAL 在epoll_create1()的flags標誌中包含無效值。
EMFILE 達到了用戶對epoll設置的最大實例數限制,在/proc/sys/fs/epoll/max_user_instances具體查看
EMFILE 達到了進程中文件描述符的最大限制
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不再需要了(內核動態的分配描述事件需要的空間),但是size必須要設置大於0的值,是爲了新的應用能運行在舊的內核上。
如有侵權請告知,將撤回,作爲自己學習用。