Как отключить всплывающее окно консоли и узнать, когда завершился процесс, созданный ProcessBuilder, чтобы его можно было уничтожить

Я создаю Java-процесс, используя ProcessBuilder для Ghostscript для преобразования 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). Потому что для входного файла другого размера он отличается, и если я возьму верхний предел, это сильно ухудшит производительность для файлов меньшего размера. Итак, что я могу сделать, чтобы уничтожить процесс, как только он будет завершен?

Буду признателен за любую оказанную помощь.

1 ответ

Решение

Для вашего первого вопроса, окно появляется из исполняемого файла, который вы запускаете, вы можете использовать

gswin64c.exe

Смотрите эту тему: Ghostscript подавляет выходные окна при вызове из командной строки

Для второго вопроса используйте waitFor() на Process объект.

process.waitFor();
Другие вопросы по тегам