编写打开命名管道读取数据的C语言例程
时间: 2024-03-12 18:43:19 浏览: 135
下面是一个打开命名管道读取数据的C语言例程:
```c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fifo_fd = open("/tmp/my_fifo", O_RDONLY);
if (fifo_fd == -1) {
perror("Failed to open FIFO");
return 1;
}
char buf[1024];
ssize_t nread = read(fifo_fd, buf, sizeof(buf));
if (nread == -1) {
perror("Failed to read FIFO");
return 1;
}
printf("Read %ld bytes: %s\n", nread, buf);
close(fifo_fd);
return 0;
}
```
其中,`/tmp/my_fifo`是命名管道的路径,`O_RDONLY`表示以只读模式打开管道,`read()`函数可以读取文件描述符中的数据,`sizeof(buf)`表示最多读取`buf`数组大小的字节。读取完数据后,需要使用`close()`函数关闭文件描述符。
注意:如果命名管道还没有被打开写入数据,`read()`函数会被阻塞,等待数据的到来。如果你想避免阻塞,可以使用非阻塞的方式打开命名管道,或者使用`select()`或`poll()`等函数来检测管道是否有数据可读。
阅读全文