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

How to disable console popup and know when a process created by ProcessBuilder has finished so that it can be destroyed

我正在使用 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)。因为对于不同大小的输入文件,它是不同的,如果我取上限,它会严重影响较小文件的性能。 那么我该怎么做才能在进程完成后立即销毁该进程?

非常感谢任何帮助。

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

gswin64c.exe

查看此主题:

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

process.waitFor();