Хорошей практикой является корректное завершение программ, то есть отправка какого-то сигнала, который вежливо просит программу завершиться.Если вы работаете в чистой среде Java, я бы порекомендовал вам использовать для этого JMX, но, поскольку ваш сторожевой таймер находится в C #, вы можете отправлять сигнал, используя обычные сокеты TCP.Этот способ хорош, если вы можете изменить программу Java, чтобы иметь возможность получать такой сигнал.
Чтобы убить любой процесс, который вы можете использовать либо killtask
команда, либо C # API, который убивает процесс, идентифицируемый PID.Это не тривиальная задача - найти PID запущенного Java-процесса в Windows.Но вы можете использовать команду jps
, которая печатает все процессы Java с их именами и аргументами основного класса.
Вы можете передать специальный идентификатор вашей Java-программе, используя опцию -D
: java -Dmyid=1234 MyClass arg1 arg2
Сохранить 1234 (myid) в программе C #.Затем, когда вы захотите проверить, работает ли java-программа, выполните jps
, проанализируйте ее вывод, получите процесс с параметром -Dmyid=1234
, получите его PID, возвращаемый jps
, и завершите процесс.