Accessing UNIX FileDescriptor id without reflection
Peter Levart
peter.levart at gmail.com
Mon May 8 15:01:48 UTC 2017
Hi Enrico,
java.io.FileDescriptor is a public class, part of public API. There's
one version for JVMs running on UNIX-based OSes and another for JVMs
running on Windows. Both contain int field 'fd'. But you already know
that if you access this field using reflection. Now instead of doing
this in Java and then passing the numberic 'fd' down to native code, you
could pass the whole FileDescriptor object to native code and access the
field using JNI. There's no restriction imposed by Jigsaw in JNI.
Regards, Peter
On 05/08/2017 03:16 PM, Enrico Olivelli wrote:
> Hi,
> I am trying to port a project (Apache BookKeeper) to Java9, actually
> this code uses reflection in order to access the 'fd' field of the
> FileDescriptor class.
>
> We have to access that ID in order to call low level native functions
>
> See
> https://github.com/apache/bookkeeper/blob/master/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/NativeIO.java
> # getSysFileDescriptor
>
> Is there any way to access the FD handle without using reflecttion ?
> If not, is it possibile to enhance the FileDescriptor API in order to
> given access to the internal "fd" field ?
>
> Thank you
>
> Enrico Olivelli
More information about the core-libs-dev
mailing list