Как я отправляю сигнал POSIX из JVM? (в Java или Clojure)
Я никогда не думал, что это будет проблемой, пока я не пытался гуглить ее — существует большая информация об обработке сигналов, но ничего об отправке их.
За исключением использования JNI или вызова оболочки для выполнения "уничтожают", там какой-либо другой способ отправить сигнал в PID?
Хорошо. Отвечая себе: я просмотрел предложенные библиотеки, но опасаюсь вводить новые зависимости для большого количества кода, особенно если я буду использовать только небольшую его часть.
Оказывается, самый простой способ - использовать JNA и взаимодействовать с системным (libc) API. В clojure это в значительной степени сводится к:
(jna-invoke Integer kill pid signo)
, конечно, после выполнения (: use net.n01se.clojure-jna).
Поскольку это программное обеспечение не предназначено для работы в Windows, меня устраивает это решение, которое должно работать во всех системах POSIX (меня интересуют MacOS и Linux).
Сигналы POSIX - это функции, специфичные для ОС, но JVM пытается быть виртуальной машиной, независимой от ОС. Так что стандартных функций для этого нет.
Но вы можете выполнять команды оболочки (используя класс Runtime ) или использовать библиотеку для ваших нужд, например Posix для Java