我正在尝试在C程序和Java程序之间进行通信。 C程序(在一个单独的线程中)通过JNI运行并写入命名管道,我们将调用my_pipe
。这很好用;我可以通过在终端中运行cat
来验证所有内容都已写入此处。
但是,当我试图读取写入管道的字符串时,问题就来了。我不确定使用的正确对象是什么。我查看了stackoverflow并试图摆弄随机访问文件和扫描仪等。看起来我可能遇到阻塞问题,因为我总是挂断读取命令 - 例如RAF.readUTF8()和Scanner.hasNext()。
STRUCTURE:创建一个线程,通过JNI运行C程序(所有写在这个线程中);创建一个线程来读取文件(管道),直到第一个线程不再存活(在此线程中读取所有内容)。
最终,我正在尝试将C输出重定向到JTextArea,因此任何解决方案都更容易实现。