Вызовите Syscalls from Java

Это - общая конвенция, которую соблюдают много программ. Нет никакого глобального способа выключить его, необходимо сделать это на программе основанием программы.

Править: (за исключением, как Gilles говорит, отключая кнопку мыши 2. Но некоторые программы действительно имеют другое использование для кнопки мыши 2, таким образом, я не рекомендовал бы это.)

12
06.09.2010, 23:11
2 ответа

Необходимо использовать собственный метод, но Вы не должны реализовывать его сами. Java имеет вариацию на JNI под названием JNA (Собственный Доступ Java), который позволяет Вам, совместно использованные библиотеки доступа непосредственно, не нуждаясь в интерфейсе 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");
    }
}
11
27.01.2020, 19:56
  • 1
    , действительно ли возможно использовать имена функций вместо чисел? –  maxschlepzig 06.09.2010, 23:43
  • 2
    @max В syscall интерфейс? Нет, syscall берет целое число для представления соответствующего вызова для создания, точно так же, как на стороне C. Существует набор #define s в /usr/include/asm/unistd.h, как #define __NR_mkdir 39 для помощи людям, вызывающим функцию C но я не думаю, что существует любой способ автоматически импортировать людей в Java, необходимо было бы определить их всех сами –  Michael Mrozek♦ 06.09.2010, 23:55
  • 3
    Остерегайтесь - числа на x86 и x86-64 отличаются на Linux. положительная сторона –  Maciej Piechotka 07.09.2010, 00:00
  • 4
    @Maciej, добавило предупреждение в –  Michael Mrozek♦ 07.09.2010, 00:14
  • 5
    Великий брат Ответа!Спасибо за помощь. Отсюда у меня есть другой вопрос. Я спрошу это через минуту. –  santiago.basulto 07.09.2010, 03:54

Необходимо использовать собственный метод или библиотеку, которая делает так для Вас.

2
27.01.2020, 19:56

Теги

Похожие вопросы