我有一个Java应用程序,例如需要自行重启(但也需要启动其他进程)。这目前通过关闭当前的应用程序完成,然后使用ShutdownHook和ProcessBuilder启动一个新的实例。在当前控制台窗口中创建新进程
我的问题是,现在的新进程在后台运行的地方,并没有自己的控制台窗口。在Windows机器上,可以使用
cmd /c start "windowtitle" java -jar myApp.jar
创建一个新的控制台窗口但是这创造了2个进程:该进程CMD和“启动”启动Java进程。这使得例如不可能获得已启动进程的stdout和stderr,因为我们只为cmd进程获取这些流,而不是由'start'命令启动的流。
对我来说,最好的解决办法是重新用于新工艺当前控制台窗口,但这个看起来有点不可能实现的,因为我没有找到如何做到这一点的任何信息。 此外,我将不胜感激在Unix机器上工作的解决方案。