Search code examples
javafile-iofreebsd

Using a numbered file descriptor from Java


I need to access numbered file descriptors from Java -- other than 0, 1 or 2.

How can this be done? I looked at the FileDescriptor class but did'nt find any way to initialize it with a given file descriptor number.

As a concrete example lets suppose Java gets called as a child process from another programing language. File descriptors 3 and 4 are provided by the other language for input and output.

What I need in Java are InputStream and OutputStream objects connected to these file-descriptors, just like System.in, System.out and System.error are connected to file-desctiptors 0, 1 and 2.

I'm using Java 1.6 and this should run on Unix alike systems.


Solution

  • I'm pretty sure this can't be done using pure Java -- you'll probably have to use native code to bind a file descriptor to a FileDescriptor object or a FileInputStream or FileOutputStream object.

    EDIT
    If you're using Linux, *BSD or macOS, you can use the pseudo files /dev/fd/nnn to access file-descriptor nnn.