为什么从/ dev / Channel读取时read()返回0?

时间:2018-11-20 12:19:16

标签: c linux-kernel

我试图使用功能read()从接收数据的通道设备中读取数据。数据不定期返回。

控制通道的设备驱动程序旨在唤醒和休眠那些正在等待通道设备读取的对象。

当通道设备没有任何数据时,用户线程休眠并等待用户唤醒;当外部代理在与通道关联的此存储器中写入数据时,用户线程将被激活并可以读取数据。

我使用for (;;)循环不断读取通道,因为当它读取数据时,read () returns 0

示例:

int ret, fd, receive;
fd = open("/dev/Channel_Normal0", O_RDWR, 0);
for(;;)
{
   printf("Try to read /dev/Channel_Normal0...\n\n");
   ret = read(fd, &receive, (sizeof(int)*4)); 
   printf("read for Channel_Normal0...\n\n");

   if(ret == 0)
     exit(0);
}

为什么return 0读取信息?因为我可以使用阅读的信息。

PS:而且,我怎么知道我实际读取了多少字节?

0 个答案:

没有答案