用于在本机代码中创建的未命名管道的Java输入/输出流?

时间:2010-06-07 17:29:30

标签: java java-native-interface stream pipe

有没有办法为在本机代码中创建的未命名管道轻松创建Java输入/输出流?

动机:我需要自己的Process类实现。本机代码产生了一个新进程,子进程'IO流重定向到未命名的管道。

问题:这些管道正确结束的文件描述符进入Java。此时我陷入困境,因为我无法创建一个新的FileDescriptor,我可以将其传递给FileInput / FileOutput流。

我使用反射来解决问题并通过简单的保镖子流程运行进行通信。但是我有一个概念,认为它不是最干净的方式。你用过这种方法吗?你觉得这种方法有什么问题吗? (平台永远不会改变)

使用本机代码搜索互联网时发现了类似的解决方案。

在我深入研究这种方法之前的任何想法都是非常受欢迎的。 我想在编写自己的IO流实现之前先尝试现有代码......

谢谢。

1 个答案:

答案 0 :(得分:3)

我之前也遇到过这种情况。我知道创建FileDescriptor对象的唯一方法是使用反射(或从JNI)在FileDescriptor类中设置私有“int”字段。

但是这种方法很好,而且肯定是如何在标准库的其他地方完成的,所以我相信它和你期望的一样合理。