GNU/Linux >> Linux の 問題 >  >> Linux

Java から Syscall を呼び出す

ネイティブ メソッドを使用する必要がありますが、自分で実装する必要はありません。 Java には、JNA (Java Native Access) と呼ばれる JNI のバリエーションがあり、共有ライブラリにラップされた JNI インターフェースを必要とせずに共有ライブラリに直接アクセスできるため、それを使用して 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");
    }
}

ネイティブ メソッド、またはそれを行うライブラリを使用する必要があります。


Linux
  1. LinuxにJavaを手動でインストールする

  2. LinuxディストリビューションのリポジトリからJavaをインストールします

  3. Httpd 2.4.6から2.4.41にアップグレードしますか?

  1. TtyからのXのスクリーンショット?

  2. ソースからOpenSSLをインストールしますか?

  3. LinuxコマンドラインからOpenofficeマクロを呼び出す方法は?

  1. PPA リポジトリから Debian に Oracle Java 10 (JDK 10) をインストールします。

  2. Ubuntu から Java をアンインストールする方法

  3. Linux での Java からの仮想メモリ使用量、メモリ使用量が多すぎる