免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8480 | 回复: 4
打印 上一主题 下一主题

[函数] 请问那位高手用过poll()这个函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-14 18:59 |只看该作者 |倒序浏览
请问那位高手用过poll()这个函数,为什么我查不出这个函数的出处,请高人指点
cer 该用户已被删除
2 [报告]
发表于 2003-02-14 19:22 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2003-02-14 22:20 |只看该作者

请问那位高手用过poll()这个函数

写select差不多
但是可以指定对每个描述字等待的信号

以下转向ZDNET
http://www00.zdnet.com.cn:88/developer/code/story/0,2000081534,39030918,00.htm
poll()说明

poll()方法试图合并select()函数的参数,同时提供范围更广的事件通知。SUSv2 如下定义poll() 函数:
int poll(structpollfdfds[ ], nfds_tnfds, int timeout);

参数含义如下:

structpollfdfds[ ] - pollfd结构数组
nfds_tnfds - fds[ ]中文件描述符集合的数目
int timeout - poll()等待事件发生的时间长度(单位是毫秒)

返回值表示多少fds有事件发生。

pollfd结构通常包括以下结构成员:

intfd – 表示某个事件由哪个fd监视
short events – 表示哪些事件将被监视的位字段
short revents – 表示调用poll()时检测到的事件的比特位

论坛徽章:
0
4 [报告]
发表于 2003-02-17 17:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2003-09-10 11:51 |只看该作者

请问那位高手用过poll()这个函数

可参考: man poll 2

我自己写的 poll 代码,用于串口设备接收input data.

#include <sys/poll.h>;

struct pollfd *ufds;

//可循环赋值多个设备,这里只有一个。
ufds ->; fd = fd;   /* file descriptor */
ufds ->; events = POLLIN;


int i = poll(ufds, 1, 500);   // 500 ms delay
if(i == 0)          //time out
    time_out++;
if(i == -1)         //error occured
    exit(-1);
else                 //data input  
{
    read(fd, buffer, sizeof(buffer));
    ...
}

更详细的可参考select 函数。
个人觉得POLL 比 SIGNAL 好,很简单。

  但遇到一个问题,代码中好像必须有以下几句:
#include <sys/signal.h>;

struct sigaction saio;
若没有这两句,执行程序的时候出错:segmentation fault.
难道poll 和signal 还有什么联系吗?或者是其他原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP