免费注册 查看新帖 |

Chinaunix

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

[C] Linux下查看FIFO剩余字节的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-05 09:57 |只看该作者 |倒序浏览
FIFO做为一种有名管道的形式,在unix下编程经常会用到,在AIX和Solaris上用ls -l能像查看普通文件一样,很方便的看到当前FIFO里面还剩余多少字节未被读取,但是linux下却不行。通过调用ioctl可以实现这个功能:

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <sys/ioctl.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <fcntl.h>
  8. #include <errno.h>

  9. int main()
  10. {
  11.         int fd = open("test.q", O_RDWR);
  12.         if (fd<0)
  13.         {
  14.                 perror("open fifo:");
  15.                 return -1;
  16.         }
  17.        
  18.         int n;
  19.         int ret;
  20.         while(1){       
  21.                 ret = ioctl(fd, FIONREAD, &n);       
  22.                 printf("%d %d\n", ret, n);
  23.                 sleep(5);
  24.         }
  25. }

复制代码


上面是一个实例代码,主要功能是

  1. ret = ioctl(fd, FIONREAD, &n);   
复制代码



通过使用上述程序,你可以使用下面这个命令往test.q这个FIFO里面写数据,上面的程序会打印出test.q里面剩下的字节数
C代码

  1. cat > test.q
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP