Вопрос по java, unix, posix – Есть ли в Java библиотека функций Unix?
=====================================================================

Я ищу библиотеку Java для взаимодействия со стандартными функциями Unix, т.е.`stat()`, `getpwuid()`, `readlink()`.

Это раньше существовало, и называлось`javaunix`, Он был выпущен еще в 2000 году. Смотрите это[объявление](https://lwn.net/2000/1019/a/javaunix.php3), Но страница проекта теперь исчезла.

Есть ли современная замена для этих типов функций в Java сегодня? Можно сделать системный вызов`/bin/ls -l` и проанализировать вывод, или написать собственный метод JNI, но эти подходы больше работы, чем просто использование старого`javaunix` библиотека.

**Clarification --** Чтобы узнать владельца файла из программы на C, он должен вызвать`stat()` который дает UID владельца, а затем использовать`getpwuid()` чтобы получить имя учетной записи из UID. В Java это можно сделать с помощью пользовательского метода JNI или`javaunix` библиотека, которая использует JNI.

Я не знаю ни одной библиотеки с функциями Unix.

Я полагаю, что для большинства функций вы можете использовать стандартный Java API, чтобы делать то, что вы хотите. например, нет необходимости использовать команду`ls` читать файлы какого-то каталога. но в некоторых конкретных случаях, таких как`stat` (чтобы узнать, является ли файл ссылкой), вы должны использовать JNI.



Насколько я знаю, JNA-POSIX в настоящее время стоит на месте.

Разработчики продолжили создавать[JNR-POSIX](https://github.com/jnr/jnr-posix)



Я был бы удивлен, увидев один, учитывая, что это почти обязательно будет зависеть от платформы. Java не лучший инструмент для этой работы. Но вы, конечно, можете подключиться через JNI или обратиться к внешним программам, если вы настаиваете. Или, может быть, заглянуть в Groovy, который, как я понимаю, достаточно хорош для сценариев оболочки, хотя у меня нет личного опыта работы с ним.



Мне известны два неотразимых проекта:

* [posix for Java](http://bmsi.com/java/posix/) (based on JNI) [derived from Jython]
* [jna-posix](https://kenai.com/projects/jna-posix) (based on JNA) [derived from JRuby]

Лично мне очень нравится[ЮНА](https://github.com/twall/jna/), Взгляните на этот пример моего, картирование`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);
    }
}

```