GNU/Linux >> Znalost Linux >  >> Linux

Vyvolání systémových volání z Javy

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.


Linux
  1. Nainstalujte Java ručně na Linux

  2. Nainstalujte Javu z repozitářů vaší distribuce Linuxu

  3. Jak nainstalovat Javu na Linux

  1. Upgradovat z Httpd 2.4.6 na 2.4.41?

  2. Snímek obrazovky X From Tty?

  3. Chraňte svůj kód Java před zpětným inženýrstvím

  1. Nainstalujte Oracle Java 10 (JDK 10) v Debianu z úložiště PPA

  2. Jak odinstalovat Javu z Ubuntu

  3. Jak vyvolat systémové volání přes syscall nebo sysenter v inline sestavení?