GNU/Linux >> Linux Esercitazione >  >> Linux

Richiama Syscall da Java

È 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.


Linux
  1. Installa Oracle Java 10 (JDK 10) in Debian dal repository PPA

  2. Come disinstallare Java da Ubuntu

  3. Utilizzo della memoria virtuale da Java sotto Linux, troppa memoria utilizzata

  4. Come richiamare una chiamata di sistema tramite syscall o sysenter in assembly inline?

  5. Chiama una chiamata di sistema Linux da un linguaggio di scripting

Come controllare la versione Java

Aggiornamento da 10.04 a 11.04?

Migrare un'applicazione Web Java da Amazon Web Services

Come installare Java 8 JRE e JDK dal file RPM su Linux

Come eseguire lo script Python da Java?

Come installo 2 diverse versioni di Java sulla stessa macchina da EPEL