Java >> Java tutorial >  >> Java

Kald Syscalls fra Java

Du skal bruge en native metode, men du behøver ikke implementere den selv. Java har en variant af JNI kaldet JNA (Java Native Access), som lader dig få direkte adgang til delte biblioteker uden at have behov for en JNI-grænseflade pakket rundt om dem, så du kan bruge den til at oprette grænseflader direkte med glibc:

import com.sun.jna.Library;
import com.sun.jna.Native;

public class Test {
    public interface CStdLib extends Library {
        int syscall(int number, Object... args);
    }

    public static void main(String[] args) {
        CStdLib c = (CStdLib)Native.loadLibrary("c", CStdLib.class);

        // WARNING: These syscall numbers are for x86 only
        System.out.println("PID: " + c.syscall(20));
        System.out.println("UID: " + c.syscall(24));
        System.out.println("GID: " + c.syscall(47));
        c.syscall(39, "/tmp/create-new-directory-here");
    }
}

Det er nødvendigt at bruge en indbygget metode eller et bibliotek, der gør det for dig.


Java tag