1
我泄漏jRuby進程,我不知道如何阻止這個。在啓動jRuby之後,我需要groovy腳本繼續前進,當主腳本死亡時我需要jRuby去死。如何在線程中運行jRuby時停止泄漏javaw進程?
test.groovy
,loop.rb
loop.rb
while(true)
puts 'Hello from jRuby'
sleep 1
end
test.groovy
def command = "jruby ./loop.rb"
Thread.start {
Process process
try {
process = command.execute()
}
catch (IOException e) {
e.printStackTrace()
return
}
Runtime.runtime.addShutdownHook {
println "Attempting to stop process"
process.destroy()
}
process.consumeProcessOutput(System.out, System.err)
process.waitFor()
}
while(true){ println 'Hello from groovy'; Thread.sleep(1000) }
執行 groovy test.groovy
如何確保我用jRuby創建的外部javaw
進程被殺死?儘管發送Cntrl+C
到正在運行的應用程序會導致正在運行的常規進程,jRuby進程仍然存在。幫幫我?
常規有沒有Process.kill? – rogerdpack
它並沒有真正殺死這個進程。 –
如果是windows,我不得不求助於調用taskkill,就像接受的答案一樣(jruby的Process.kill也不起作用) – rogerdpack