eventfd是Linux 2.6.27内核版本加入的系统调用,主要可以用来进程/线程间通讯。用法很简单,通过调 用 int eventfd(unsigned int initval, int flags) 函数返回一个文件描述符,通过read和write函数进行进程/线程间通讯。
调用eventfd函数会创建一个eventfd对象,可以被用户空间的应用程序用来作为事件等待/通知机制。eventfd函数返回eventfd对象的文件描述符,通过操作文件描述符来进行事件等待和通知。eventfd对象包含一个由内核维护的64位的无符号整数(uint64_t),用read/write来读/写这个64位的无符号整数。
initval参数:initval 用来初始化eventfd对象包含的64位无符号整数。
flags参数:flags是eventfd文件描述符的标志,通过设置标志位来设置描述符。
EFD_CLOEXEC:表示返回的eventfd文件描述符在fork后exec其他程序时会自动关闭这个文件描述符;
EFD_NONBLOCK&#x