LINUX.ORG.RU

Java, вывод из созданного процесса на консоль


0

0

Всем доброго дня!

Столкнулся в Java со следующей проблемой: Создаю процесс и жду окончания его выполнения. Если созданный процесс активно использует вывод на консоль, то java-приложение виснет.

Может кто-то сталкивался с похожей проблемой, из-за чего это происходит и как этого можно избежать?

В теле процесса заюзай yeld() (помоему так пишется или чтото подобное) реально поможет на первых порах :)

anonymous
()

подключись к йвм'у с помощью консоли и проверь это всё дело на дэдлоки. хотя бы будет ясна примерная причина этого дела.

Pi ★★★★★
()
Ответ на: комментарий от Pi

вот примерный код класса создающего процесс:

public class Runner { public static void main(String[] args) throws Exception { Process proc = Runtime.getRuntime().exec("java -cp <путь к Main> Main"); System.out.println(proc.waitFor()); } }

а это запускаемый процесс: public class Main { public static void main(String[] args) { for (int i = 0; i < 462; i++) System.out.print(" "); } }

при запуске Runner висит, чего-то ожидая.

Если же я в классе Main в цикле изменю 462 на 461, отрабатывает нормально. Подвисает в момент когда я выполняю System.out.print 462 раз :)

То же самое происходит, если запускаемый процесс не является java-приложением, а, например, реализован на C++. Изменяется только номер байта начиная с которого происходит подвисание.

smokeless
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.