¿Hay una biblioteca Java de funciones de Unix?

Estoy buscando una biblioteca Java para interactuar con las funciones estándar de Unix, es decir, stat() , getpwuid() , readlink() .

Esto solía existir, y se llamaba javaunix . Fue lanzado en 2000. Vea este anuncio . Pero la página del proyecto ya no está.

¿Hay algún reemplazo moderno para este tipo de funciones en Java hoy en día? Se podría hacer una llamada al sistema a /bin/ls -l y analizar el resultado, o escribir un método JNI personalizado, pero estos enfoques son más javaunix que el simple uso de la antigua biblioteca javaunix .

Aclaración: para averiguar el propietario de un archivo, desde un progtwig C, debe llamar a stat() que proporciona el UID del propietario y luego usar getpwuid() para obtener el nombre de la cuenta del UID. En Java, esto se puede hacer mediante un método JNI personalizado o la biblioteca javaunix que usa JNI.

Soy consciente de dos proyectos convincentes:

  • posix para Java (basado en JNI) [derivado de Jython]
  • jna-posix (basado en JNA) [derivado de JRuby]

Personalmente, me gusta mucho JNA . Eche un vistazo a este ejemplo mío, link(2) mapeo link(2) :

 import com.sun.jna.Library; import com.sun.jna.Native; class Link { private static final C c = (C) Native.loadLibrary("c", C.class); private static interface C extends Library { /** see man 2 link */ public int link(String oldpath, String newpath); } @Override protected void hardLink(String from, String to) { c.link(to, from); } } 

JNA-POSIX está estancado actualmente, hasta donde yo sé.

Los desarrolladores pasaron a crear JNR-POSIX

Me sorprendería ver uno, considerando que casi necesariamente sería específico de la plataforma. Java no es la mejor herramienta para ese trabajo. Pero, si insistes, ciertamente podrías conectarte a través de JNI o ​​llamar a progtwigs externos. O tal vez mirar en Groovy, que entiendo es razonablemente bueno para scripts de shell, aunque no tengo ninguna experiencia personal con él.

No conozco ninguna biblioteca con las funciones de Unix.

para la mayoría de las funciones, creo que puede usar la API estándar de Java para hacer lo que quiera. por ejemplo, no es necesario utilizar el comando ls para leer los archivos de algún directorio. pero en algunos casos específicos, como stat (para saber si un archivo es un enlace) debes usar JNI.