如何禁用控制台弹出窗口并知道ProcessBuilder创建的进程何时完成以便可以销毁它

时间:2016-02-26 09:46:51

标签: java processbuilder

我正在使用ProcessBuilder为ghostscript创建java进程,将pdf转换为tiff,如下所示

process = new ProcessBuilder("D:\\ghost-script\\gs\\gs9.02\\bin\\gswin64.exe","-q",  "-dNOPAUSE", "-dBATCH", "-dMaxStripSize=8192", "-sDEVICE=tiffg4", "-r300x300", "-dDITHERPPI=200", "-sOutputFile=D:\\ghost-script\\example\\output.tif", "D:\\ghost-script\\example\\input2.pdf", "-c", "quit").start();

现在我有两个问题。

  1. 这个过程打开控制台弹出窗口,我不需要它,因为它必须在服务器上运行。我可以设置什么参数来禁用该控制台弹出窗口。
  2. 输入文件可以是任何大小。我怎么知道这个过程何时完成,以便我可以销毁它。我不想要Thread.sleep(time-to_sleep)。因为对于不同大小的输入文件它是不同的,如果我采取上限,它将严重妨碍较小尺寸文件的性能。 那么我该怎样做才能在完成后立即销毁这个过程?
  3. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

对于您的第一个问题,该窗口来自您启动的可执行文件,您可能需要使用

gswin64c.exe

请参阅此主题:Ghostscript suppress output windows when called by command line

对于第二个问题,请在Process对象上使用waitFor()

process.waitFor();