Как отключить всплывающее окно консоли и узнать, когда завершился процесс, созданный 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();
Теперь у меня две проблемы.
- Этот процесс открывает всплывающую консоль, которая мне не нужна, так как она должна работать на сервере. Какой параметр я могу установить, чтобы отключить это всплывающее окно консоли.
- Входной файл может быть любого размера. Как я могу знать, когда процесс завершился, чтобы я мог его уничтожить. Я не хочу Thread.sleep (time-to_sleep). Потому что для входного файла другого размера он отличается, и если я возьму верхний предел, это сильно ухудшит производительность для файлов меньшего размера. Итак, что я могу сделать, чтобы уничтожить процесс, как только он будет завершен?
Буду признателен за любую оказанную помощь.
1 ответ
Решение
Для вашего первого вопроса, окно появляется из исполняемого файла, который вы запускаете, вы можете использовать
gswin64c.exe
Смотрите эту тему: Ghostscript подавляет выходные окна при вызове из командной строки
Для второго вопроса используйте waitFor() на Process
объект.
process.waitFor();