Musíte použít nativní metodu, ale nemusíte ji implementovat sami. Java má variaci na JNI nazvanou JNA (Java Native Access), která vám umožňuje přistupovat ke sdíleným knihovnám přímo, aniž byste kolem nich potřebovali rozhraní JNI, takže to můžete použít k přímému propojení s 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");
}
}
Je nutné použít nativní metodu nebo knihovnu, která to udělá za vás.