如何禁用控制台弹出窗口并知道 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();
现在我有两个问题。
- 此过程会打开我不需要的控制台弹出窗口,因为它必须在服务器上 运行。我可以设置什么参数来禁用该控制台弹出窗口。
- 输入文件可以是任何大小。我怎么知道进程何时完成以便我可以销毁它。我不想要 Thread.sleep(time-to_sleep)。因为对于不同大小的输入文件,它是不同的,如果我取上限,它会严重影响较小文件的性能。
那么我该怎么做才能在进程完成后立即销毁该进程?
非常感谢任何帮助。
对于您的第一个问题,window 来自您启动的可执行文件,您可能需要使用
gswin64c.exe
查看此主题:
对于第二个问题,请在 Process
对象上使用 waitFor()。
process.waitFor();
我正在使用 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();
现在我有两个问题。
- 此过程会打开我不需要的控制台弹出窗口,因为它必须在服务器上 运行。我可以设置什么参数来禁用该控制台弹出窗口。
- 输入文件可以是任何大小。我怎么知道进程何时完成以便我可以销毁它。我不想要 Thread.sleep(time-to_sleep)。因为对于不同大小的输入文件,它是不同的,如果我取上限,它会严重影响较小文件的性能。 那么我该怎么做才能在进程完成后立即销毁该进程?
非常感谢任何帮助。
对于您的第一个问题,window 来自您启动的可执行文件,您可能需要使用
gswin64c.exe
查看此主题:
对于第二个问题,请在 Process
对象上使用 waitFor()。
process.waitFor();