2017-02-21 52 views
4

Я слышал, что в java 9 они много работали, обновляя Process API. Есть ли теперь более чистый способ отправить сигнал на Process, порожденный Java? Сигналы используются как простой способ инициировать действия в процессе.Отправка сигнала процессу из Java 9

Прежде чем я должен был использовать отражение, чтобы получить pid, а затем воспользуйтесь Runtime#exec, чтобы отправить команду kill. Я предполагаю, что вам все еще нужно использовать Runtime#exec, потому что сигнал может быть зависимым от ОС, но мне любопытно, знает ли кто-нибудь лучший способ, чем это!

Process p = Runtime.getRuntime().exec(...); 
... 
Runtime.getRuntime().exec("kill -SIGUSR1 " + p.getPid()); 
+3

Вы можете посмотреть документ: http://download.java.net/java/jdk9/docs/api/java/lang/Process.html Единственные очевидные вещи, которые я вижу, - это 'destroy' и' destroyForcibly' , но те были там уже в Java 8. –

+0

@JornVernee yup, где я увидел «getPid». Просто интересно, пропустил ли я что-нибудь! – flakes

+0

Возможный дубликат [Как отправить сигнал SIGINT с Java на внешний процесс?] (Http://stackoverflow.com/questions/7835212/how-to-send-sigint-signal-from-java-to-an-external -process) – Whymarrh

ответ

2

сигнал может быть зависимым от ОСА

Да, окна не имеют сигналы в том же смысле POSIX операционка делать.

, но мне любопытно, знает ли кто-нибудь лучший способ, чем это!

jnr-posix обеспечивает тонкие обертки вокруг libc, в том числе убивает.