È necessario utilizzare un metodo nativo, ma non è necessario implementarlo da soli. Java ha una variante di JNI chiamata JNA (Java Native Access), che ti consente di accedere direttamente alle librerie condivise senza bisogno di un'interfaccia JNI avvolta attorno ad esse, quindi puoi usarla per interfacciarti direttamente con 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");
}
}
È necessario utilizzare un metodo nativo o una libreria che lo faccia per te.