如何实现select函数调用

时间:2014-07-09 07:20:15

标签: linux linux-kernel

我创建了一个虚拟节点“/ dev / abc”,有两个应用程序a.c和b.c

a.c会将数据写入节点, b.c将从节点

中读取数据

在b.c中我打开节点并使用select函数 验证节点中的数据是否可用。

我使用下面的代码检查数据。 但是,如果没有从a.c写入数据,b.c正在阅读 数据

代码:

fd_set read set;
int result;
fd=open ("/dev/abc", O_RDWR);
FD_SET (fd, &readset);
result=select (fd+1,&readset, NULL, NULL, NULL);
if(result> 0)
{
    if (FD_ISSET (fd, &readset))
    {
       read (fd, buffer, 100);
     }
}

请建议我如何使用select函数调用 上面的场景。

此致 Ajith Kumsi

1 个答案:

答案 0 :(得分:1)

您应该在FD_ZERO()之前致电FD_SET()以清除readset。这可能就是原因。 <{3}}底部附近有一个明显的例子,您可以按照它进行操作。