- 论坛徽章:
- 0
|
FIFO做为一种有名管道的形式,在unix下编程经常会用到,在AIX和Solaris上用ls -l能像查看普通文件一样,很方便的看到当前FIFO里面还剩余多少字节未被读取,但是linux下却不行。通过调用ioctl可以实现这个功能:
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <errno.h>
- int main()
- {
- int fd = open("test.q", O_RDWR);
- if (fd<0)
- {
- perror("open fifo:");
- return -1;
- }
-
- int n;
- int ret;
- while(1){
- ret = ioctl(fd, FIONREAD, &n);
- printf("%d %d\n", ret, n);
- sleep(5);
- }
- }
复制代码
上面是一个实例代码,主要功能是
- ret = ioctl(fd, FIONREAD, &n);
复制代码
通过使用上述程序,你可以使用下面这个命令往test.q这个FIFO里面写数据,上面的程序会打印出test.q里面剩下的字节数
C代码
|
|