Отправка сигнала POSIX от JVM - PullRequest
16 голосов
/ 30 июня 2010

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

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

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

Ответы [ 2 ]

9 голосов
/ 30 июня 2010

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

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

(jna-invoke Integer kill pid signo)

после выполнения (: используйте net.n01se.clojure-jna), конечно.1008 * Так как это программное обеспечение не предназначено для работы в Windows, я в порядке с этим решением, которое должно работать на всех системах POSIX (MacOS и Linux - то, что меня интересует).

5 голосов
/ 30 июня 2010

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

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

...