2
我有一个Java-Gnome GUI,它启动一个单独的线程来运行我没有代码的命令行程序。我想在GUI中显示一个进度条,以显示第二个线程已完成的百分比。是否有可能跟踪控制外部程序的线程的进度?
鉴于我/我的程序不控制外部程序,这是可能的还是我卡在一个不确定的脉冲进度条?谢谢
我有一个Java-Gnome GUI,它启动一个单独的线程来运行我没有代码的命令行程序。我想在GUI中显示一个进度条,以显示第二个线程已完成的百分比。是否有可能跟踪控制外部程序的线程的进度?
鉴于我/我的程序不控制外部程序,这是可能的还是我卡在一个不确定的脉冲进度条?谢谢
当命令行程序在控制台中报告它的进度时,可以在Java应用程序中读取此输出。为了做到这一点,你必须使用ProcessBuilder创建Process对象:
ProcessBuilder processBuilder = new ProcessBuilder("yourCommandLineProgram");
Process process = processBuilder.start();
OutputStream outputStream = process.getOutputStream();
现在你可以阅读outputStream
对象来获取命令行程序的文本输出。
这当然只会在命令行程序向stdout报告进度以及何时可以使用此输出来确定剩余工作量时帮助您。当程序没有公开这些信息时,就没有办法找到它的进展(实际上,根据halting problem,如果没有完全执行它,就不可能知道程序运行了多长时间)。
先猜:不,这是不可能的。不知道第二个线程是做什么的。 – Burkhard
外部命令行程序是否通过文本输出报告其进度,还是保持沉默? – Philipp
这是一个名为auCDtect的程序 - 我将它传递给音轨名称,并且它返回与每个音轨有关的文本输出 - 这是由流水线处理的, 我怀疑这可能会回答我的问题......谢谢! – db579