我需要从
Java访问编号的文件描述符,而不是0,1或2.
如何才能做到这一点?我看了FileDescriptor类,但没有找到任何方式用给定的文件描述符号初始化它.
作为一个具体的例子,假设Java被从另一个编程语言调用为子进程.文件描述符3和4由另一种语言提供输入和输出.
我在Java中需要的是连接到这些文件描述符的InputStream和OutputStream对象,就像System.in,System.out和System.error连接到文件计数器0,1和2.
我正在使用Java 1.6,这应该在Unix系统上运行.
测试工作解决方案:
文件描述符特殊文件系统条目的答案指出了以下可行的解决方案:
找出你的Unix系统是否有一个特殊的文件系统,其中包含所有文件描述符的命名条目.
>我正在使用FreeBSD,其中fdescfs(5)是一个只做这个的文件系统.在Linux下,它将是procfs.
>确保已安装此文件系统
> FreeBSD:将fdescfs / dev / fd fdescfs rw 0 0放在/ etc / fstab中
或者在shell提示符下运行mount -t fdescfs null / dev / fd(大概用sudo)
>使用新的FileInputStream(“/ dev / fd / 3”)和新的FileOutputStream(“/ dev / fd / 4”)获取连接到文件描述符的流(路径为FreeBSD,替换为您的操作系统路径)