我正在使用Runtime类来执行软件的安装。但是,它不起作用,这意味着,在我解雇作业(使用Runtime类创建)之后,在某个时间(很快)之后,安装作业就会退出。我认为问题是主线程必须完成并因此杀死使用Runtime类创建的Process。我对么 ?这里有什么解决方案?
这就是我在主要课程中解雇我的工作的方式:
try
{
Runtime.getRuntime().exec(cmd);
}
catch(IOException e)
{
//add logging functionality
e.printStackTrace();
}
此命令后不久,主函数完成。
Runtime命令没有问题。它工作..我甚至可以看到它开始(安装taht我通过代码解雇)然后它突然退出。
答案 0 :(得分:5)
您可能想要查看java.lang.Process类。你可能想要这样的东西:
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
子流程可能正在接收SIGHUP并退出。
编辑:
在上下文中,我想是这样的事情:
try
{
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
}
catch(IOException e)
{
//add logging functionality
e.printStackTrace();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
答案 1 :(得分:1)
创建的进程是主线程的子进程。如果主线程完成,则进程将被终止,类似于手动执行命令并按 ctrl c 或关闭窗口。
答案 2 :(得分:0)
这只是一个疯狂的猜测,但我认为编程退出是因为你的代码中有错误(逻辑)可能是一个很快退出的while循环,
尝试擅长运行时执行的代码。
这个过程可能陷入僵局。解决方案在评论中,带有样本。