如何检查进程的进程
我开发了一个独立的应用程序使用java,其中我正在执行使用运行时的外部进程。但是这个过程的执行需要很长时间,我想显示它的进度监视器。如何检查进程的进程
我怎样才能得到一个已使用的Java运行时执行的过程的进展如何?我应该使用进度条吗?
为了能够“了解”过程的进展,你将需要实现某种里程碑的工艺变化,因为它去一起。您必须实施该逻辑,以便外部流程将您的应用程序通知其进度。但是,这并不总是可行的(因为首先你需要访问外部过程的代码)或者很简单。
你可以做什么,是使用选框进度条,这将让动画去indefinitevely:
有时候,你不能马上 确定一个长期运行的 任务的长度,或该任务可能会长时间停留在 相同的完成状态。通过将 进度栏置于不确定模式,可以显示没有 可衡量进度的工作。 A 不确定模式下的进度条 显示动画以指示 工作正在进行。
你可以看看this Java教程(同一个地方,从那里我得到了上面的文字),了解更多信息。
你必须与外部程序来获取其状态传送。如果外部流程没有提供任何有关其状态的信息,则无法达到您想要的效果。
这只能通过读取进程的输出流(myProcess.getInputStream()和myProcess.getErrorStream())来实现,当然只有当进程在输出中显示其进度时才可能。
有迹象表明,只有当他们相信他们是在一个交互式shell中运行显示进度的过程,所以你必须通过将相应的环境参数(wget的是这些工具之一)“模仿”的壳。
当然,你必须手动解析过程的输出。
如果外部过程包括从一个命令到另一个管道数据,则可以使用pv(1)命令,以显示输出。
要进入的核心是:如果你不知道也无法控制,测量或预测事务的持续时间使用jProgressBar1.setIndeterminate(true);
你控制外部进程的源代码? – 2011-02-03 11:38:05
@Martinho不,我不控制外部过程的代码。 – Antrromet 2011-02-03 11:42:39