Как заставить мой родительский процесс java ждать завершения дочернего процесса. Я попытался с runtime.exec
и processBuilder.pb
:Реальный процесс не завершится и не завершится в Windows?
String cmd = "ffmpeg -i input.vob output.mp4"
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
proc.waitFor();
Это прекрасно работает с небольшим входным файлом (скажем, менее 10 Мб). Если я дам больший входной файл, тогда программа будет повешена. Выходной файл будет частично создан, и создание файла будет изменено, и управление не вернется. Даже proc.join(10000);
не дал никакого полезного результата. Здесь родительский процесс заканчивается до завершения дочернего процесса (ffmpeg).
Как преодолеть эту проблему?
чтения и реализации * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/article/2071275/ ядро-Java/когда-среда-Exec --- выиграл-t.html). Затем проигнорируйте это, ссылаясь на 'exec (..)' и используйте 'ProcessBuilder' для создания' Process'. Также разбить 'String args' на' String [] args' для учета аргументов, содержащих пробелы. –