我有一個Java應用程序,例如需要自行重啓(但也需要啓動其他進程)。這目前通過關閉當前的應用程序完成,然後使用ShutdownHook和ProcessBuilder啓動一個新的實例。在當前控制檯窗口中創建新進程
我的問題是,現在的新進程在後臺運行的地方,並沒有自己的控制檯窗口。在Windows機器上,可以使用
cmd /c start "windowtitle" java -jar myApp.jar
創建一個新的控制檯窗口但是這創造了2個進程:該進程CMD和「啓動」啓動Java進程。這使得例如不可能獲得已啓動進程的stdout和stderr,因爲我們只爲cmd進程獲取這些流,而不是由'start'命令啓動的流。
對我來說,最好的解決辦法是重新用於新工藝當前控制檯窗口,但這個看起來有點不可能實現的,因爲我沒有找到如何做到這一點的任何信息。 此外,我將不勝感激在Unix機器上工作的解決方案。