2009-07-06 14 views
12

Szukam biblioteki Java do interfejsu ze standardowymi funkcjami Uniksa, tj. stat(), getpwuid(), readlink().Czy istnieje biblioteka Java funkcji Unix?

To istniało i było nazywane javaunix. Został wydany w 2000 roku. Zobacz to: announcement. Ale strona projektu już nie istnieje.

Czy jest dzisiaj jakiś nowoczesny zamiennik dla tego typu funkcji w Javie? Można wywołać wywołanie systemowe do /bin/ls -l i przeanalizować wyjście lub napisać niestandardową metodę JNI, ale te podejścia są bardziej skuteczne niż po prostu korzystanie ze starej biblioteki javaunix.

Wyjaśnienie - W celu znalezienia się właściciela danego pliku, z programu C, należy zadzwonić stat() co daje UID właściciela, a następnie użyj getpwuid() uzyskać nazwę konta z UID. W Javie można to zrobić za pomocą niestandardowej metody JNI lub biblioteki javaunix, która korzysta z JNI.

Odpowiedz

16

Jestem świadomy dwóch istotnych projektów:

Osobiście bardzo lubię JNA. Spójrz na ten przykład kopalni, mapowanie 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); 
    } 
} 
-3

Nie znam żadnej biblioteki z funkcjami uniksowymi.

dla większości funkcji, uważam, że możesz używać standardowego interfejsu API języka Java, aby robić to, co chcesz. na przykład nie ma potrzeby używania polecenia ls do odczytywania plików z jakiegoś katalogu. ale w niektórych szczególnych przypadkach, takich jak stat (aby dowiedzieć się, czy plik jest linkiem), musisz użyć JNI.

-2

Byłbym zaskoczony, gdybym go zobaczył, biorąc pod uwagę, że byłby on koniecznie związany z platformą. Java nie jest najlepszym narzędziem do tej pracy. Ale możesz na pewno podłączyć się przez JNI lub jeśli chcesz, jeśli chcesz, możesz dzwonić do programów zewnętrznych. A może spojrzeć na Groovy, co, jak rozumiem, jest całkiem dobre dla skryptów powłoki, choć nie mam z tym żadnego osobistego doświadczenia.

Powiązane problemy