Vous devez utiliser une méthode native, mais vous n'avez pas besoin de l'implémenter vous-même. Java a une variante de JNI appelée JNA (Java Native Access), qui vous permet d'accéder directement aux bibliothèques partagées sans avoir besoin d'une interface JNI enroulée autour d'elles, vous pouvez donc l'utiliser pour vous interfacer directement avec 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");
}
}
Il est nécessaire d'utiliser une méthode native, ou une bibliothèque qui le fait pour vous.