我正在使用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/