GNU/Linux >> Tutoriales Linux >  >> Linux

Invocar Syscalls desde Java

Necesita usar un método nativo, pero no necesita implementarlo usted mismo. Java tiene una variación de JNI llamada JNA (Java Native Access), que le permite acceder a bibliotecas compartidas directamente sin necesidad de una interfaz JNI envuelta alrededor de ellas, por lo que puede usarla para interactuar directamente 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");
    }
}

Es necesario utilizar un método nativo, o una librería que lo haga por ti.


Linux
  1. Instalar Java manualmente en Linux

  2. Instale Java desde los repositorios de su distribución de Linux

  3. Captura de pantalla de X de Tty?

  4. Proteja su código Java de la ingeniería inversa

  5. Instale Oracle Java 10 (JDK 10) en Debian desde el repositorio de PPA

Cómo comprobar la versión de Java

¿Actualización de 10.04 a 11.04?

Migrar una aplicación web Java desde Amazon Web Services

Cómo instalar Java 8 JRE y JDK desde un archivo RPM en Linux

Uso de memoria virtual de Java bajo Linux, demasiada memoria utilizada

¿Cómo instalo 2 versiones diferentes de Java en la misma máquina de EPEL?