necesito para acceder a los descriptores de archivos numerados desde Java - distinto de 0, 1 ó 2.El uso de un descriptor de archivo numerado desde Java
¿Cómo puede hacerse esto? Miré la clase FileDescriptor
pero no encontré ninguna forma de inicializarla con un número de descriptor de archivo dado.
Como ejemplo concreto, supongamos que se llama a Java como un proceso secundario desde otro lenguaje de programación. Los descriptores de archivos 3 y 4 son proporcionados por el otro idioma para entrada y salida.
Lo que necesito en Java son InputStream
y OutputStream
objetos conectados a estos archivos descriptores, al igual que System.in, System.out y System.error están conectados a presentar-desctiptors 0, 1 y 2.
Estoy usando Java 1.6 y esto debería funcionar en sistemas similares a Unix.
Probado solución de trabajo:
La respuesta a las entradas del sistema de archivos especiales de descriptor de archivo me hizo apuntar a la siguiente solución viable:
averiguar si y donde el sistema por igual Unix tiene una sistema de archivos especial que contiene entradas con nombre para todos los descriptores de archivos.
- Estoy usando FreeBSD donde fdescfs(5) es un sistema de archivos que hace justamente esto. Bajo Linux sería procfs.
asegurarse de que este sistema de archivos está montado
FreeBSD: poner
fdescfs /dev/fd fdescfs rw 0 0
en/etc/fstab
o correr
mount -t fdescfs null /dev/fd
en un intérprete de comandos (probablemente con sudo)
Use los nuevos
FileInputStream("/dev/fd/3")
ynew FileOutputStream("/dev/fd/4")
Para obtener los flujos conectados a los filedescriptors (los caminos son para FreeBSD, reemplace con sus caminos sistemas operativos)
http://www.kfu.com/~nsayer/Java/jni-filedesc.html Podría ayudar –