Java에서 시스템 호출 호출

Java에서 시스템 호출 호출

Java에서 직접 시스템 호출을 호출할 수 있는 방법이 있습니까? 아니면 기본 메서드를 먼저 호출해야 합니까?

답변1

기본 메서드를 사용해야 하지만 직접 구현할 필요는 없습니다. Java에는 JNI의 변형이 있습니다.JNA(자바 네이티브 액세스)이를 사용하면 이를 래핑하는 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");
    }
}

답변2

이를 수행하는 기본 메소드나 라이브러리를 사용해야 합니다.

관련 정보