Utilizzerai il PID per terminare il processo? In tal caso, puoi semplicemente chiamare destroy()
sull'istanza Process
. Non è necessario il PID. Si noti che è necessario avviare la procedura utilizzando ProcessBuilder
anziché getRuntime().exec()
, affinché funzioni.
Se è davvero necessario l'ID di processo, potrebbe essere necessario utilizzare uno script di shell. Non c'è modo di ottenere il PID da Java, AFAIK.
EDIT:
Dal momento che è necessario mantenere una maniglia sul Process
dopo aver lasciato la vostra applicazione e il ritorno ad esso, una soluzione è quella di rendere un membro statico della classe che genera la Process
:
private static Process myProcess;
Utilizzare questo membro per archiviare lo Process
di ritorno dalla chiamata start()
sul numero ProcessBuilder
. Il membro statico rimarrà in giro finché la tua app è in memoria - non deve essere visibile. Dovrebbe essere possibile interrompere il processo dopo il ritorno alla tua app. Se accade che il sistema uccida la tua app per liberare risorse, allora non avrai modo di terminare il processo secondario (se rimane in esecuzione), ma questa soluzione dovrebbe funzionare nella maggior parte dei casi.
myPid() restituisce il PID della tua app e non il processo che hai iniziato usando getRuntime(). Exec(). –