Подтвердить что ты не робот

Отправка сигнала POSIX из JVM

Как отправить сигнал POSIX из JVM? (в Java или Clojure)

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

За исключением использования JNI или вызова оболочки для выполнения "kill", есть ли другой способ отправки сигнала на PID?

4b9b3361

Ответ 1

Ok. Отвечая на вопрос: я посмотрел на предлагаемые библиотеки, но я опасаюсь вводить новые зависимости от большого количества кода, особенно если я буду использовать только небольшую часть.

Оказалось, что самый простой способ - использовать JNA и интерфейс с API системы (libc). В clojure это в значительной степени составляет:

(jna-invoke Integer kill pid signo)

после выполнения (: use net.n01se.clojure-jna), конечно.

Поскольку это программное обеспечение не предназначено для работы в Windows, я в порядке с этим решением, которое должно работать на всех POSIX-системах (MacOS и Linux - это то, что меня интересует).

Ответ 2

Сигналы POSIX являются специфичными для ОС функциями, но JVM пытается быть независимой от ОС виртуальной машиной. Таким образом, для этого нет стандартных функций.

Но вы можете выполнять команды оболочки (используя Runtime class) или использовать некоторые lbrary для ваших нужд, например Posix для Java