当前位置: 技术问答>linux和unix
一个简单的poll函数调用
来源: 互联网 发布时间:2016-02-06
本文导语: 书上说函数int poll(struct pollfd * fds, int numfds, int timeout); 1)如果当前可读写,返回读写信息。 2)如果当前不可读写,则阻塞进程,并等待驱动程序唤醒,重新调用poll函数,或超时返回。 但是我实验时却发现他并没...
书上说函数int poll(struct pollfd * fds, int numfds, int timeout);
1)如果当前可读写,返回读写信息。
2)如果当前不可读写,则阻塞进程,并等待驱动程序唤醒,重新调用poll函数,或超时返回。
但是我实验时却发现他并没有阻塞进程,不知道是为何?
源码如下:
#include
#include
#include
#include
int main(void)
{
struct pollfd fds[2];
char buf[4096];
int i,rc;
if((fds[0].fd=open("p1",O_RDONLY | O_NONBLOCK))
1)如果当前可读写,返回读写信息。
2)如果当前不可读写,则阻塞进程,并等待驱动程序唤醒,重新调用poll函数,或超时返回。
但是我实验时却发现他并没有阻塞进程,不知道是为何?
源码如下:
#include
#include
#include
#include
int main(void)
{
struct pollfd fds[2];
char buf[4096];
int i,rc;
if((fds[0].fd=open("p1",O_RDONLY | O_NONBLOCK))