java - 我是否必须先取消链接 fifo 才能读取数据?

标签 java c fifo

我正在使用c进程来监听串口并将其发送到java程序来对数据进行处理。

我运行c程序,它调用mkfifo(),它会阻塞,等待java程序打开另一端。

一旦java程序打开另一端,c程序就会进入循环,从串行端口读取数据并使用文件描述符调用write(fd)

在我终止 C 进程或 C 进程调用 unlink() 之前,java 程序无法获取数据。

这是传递数据的唯一方法吗?如果我想保持打开状态,是否必须使用消息队列?

根据我的研究,write 似乎没有缓冲,因此如果我使用文件指针,我不必执行 fflush 之类的操作,但是那为什么不发送呢?

最佳答案

原来我使用的是bufferedreader.readLine(),而不仅仅是read。更改为使用缓冲区读取修复了该问题

关于java - 我是否必须先取消链接 fifo 才能读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302337/

相关文章:

Java 正则表达式 - 提取字符串中特定单元之前的所有 float

java - java中正确使用的数据结构是什么?

c# - MassTransit、RabbitMQ - FIFO 出队支持

通过 fifo 写入/读取数据的正确方法

java - 指定文件的位置

java - Firebase 未初始化

java - 如何使用spring data在elasticsearch中根据结果的最高精度对数据进行排序

c - 了解函数/参数中的星号 "*"

无法打印 C 中的返回值

C:如何从套接字上的 read() 清除缓冲区