C eventfd_read()将在何时阻塞?
我想知道在什么情况下C eventfd_read()将在何时阻塞?,c,linux,glibc,C,Linux,Glibc,我想知道在什么情况下eventfd\u read()会被阻止 我读了手册,但没有提到任何东西 我通过eventfd(0,0)创建了文件描述符 提前感谢。来自read()手册页的呼叫: 如果调用时eventfd计数器为零 读取(2),则调用会阻塞,直到计数器 变为非零(此时,读取(2)按如下方式进行 如果文件 描述符已被设置为非阻塞 对于eventfd_read()和eventfd_write()函数: 这些函数对eventfd执行读写操作 文件描述符,如果指定了正确的字节数,则返回0 已转移,或
eventfd\u read()
会被阻止
我读了手册,但没有提到任何东西
我通过eventfd(0,0)
创建了文件描述符
提前感谢。来自read()手册页的呼叫:
如果调用时eventfd计数器为零
读取(2),则调用会阻塞,直到计数器
变为非零(此时,读取(2)按如下方式进行
如果文件
描述符已被设置为非阻塞
对于eventfd_read()
和eventfd_write()
函数:
这些函数对eventfd执行读写操作
文件描述符,如果指定了正确的字节数,则返回0
已转移,或-1
因此,eventfd\u read()
只是read()
和read()
块的包装,即当eventfd
计数器为零且未为描述符设置O\u NONBLOCK
时(使用或EFD\u NONBLOCK
)
您可以通过以下方式进行验证:
int
eventfd_read(int fd,eventfd_t*值)
{
返回uu read(fd,value,sizeof(eventfd_t))!=sizeof(eventfd_t)?-1:0;
}
int
eventfd_read (int fd, eventfd_t *value)
{
return __read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0;
}