Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Запуск .sh скрипта из Java и вывод этого скрипта


Автор: MakTpaxep 2.4.2013, 19:38
Делаю лабу в линуксе. У меня есть .sh скрипт, который пишет hello, каждую секунду.
Я запускаю этот скрипт через process builder:
procBuilder = new ProcessBuilder("sh","/home/will/javaprj/script.sh");
process = procBuilder.start();
В консоль всё-равно ничего не выводится, пробовал всякие OutputRedirect делать, попробовал несколько вариантов из гугла, но безрезультатно.
По умолчанию будет этот скрипт что-то выводить в терминал, где я родительский java процесс запускаю?
Есть подозрение, что скрипт не запустился. Как проверить что скрипт запущен?

Автор: LSD 3.4.2013, 10:27
Цитата(MakTpaxep @  2.4.2013,  20:38 Найти цитируемый пост)
По умолчанию будет этот скрипт что-то выводить в терминал, где я родительский java процесс запускаю?

Нет. Тебе нужно самому читать stdout и выводить в терминал или еще куда.

Автор: jk1 3.4.2013, 10:27
Цитата

По умолчанию будет этот скрипт что-то выводить в терминал, где я родительский java процесс запускаю?


нет. Для этого надо явным образом сделать 

Код

processBuilder.inheritIO()


тогда дочерний процесс унаследует все стандартные потоки родителя.

Цитата

Есть подозрение, что скрипт не запустился. Как проверить что скрипт запущен? 


Если сделать inherit, то в терминале java-процесса будет весь вывод скрипта, по нему можно делать диагностику проблемы. 
Если без inherit, то нужно почитать process.getOutputStream(), там собственно и будет весь вывод скрипта. Причем если этот поток не читать, то выполнение скрипта может быть заблокировано когда объем вывода скрипта превысит размер буфера потока. 

Автор: LSD 3.4.2013, 12:45
Цитата(jk1 @  3.4.2013,  11:27 Найти цитируемый пост)
processBuilder.inheritIO()

Надо же, не прошло и 3-х версий smile 

Автор: MakTpaxep 3.4.2013, 17:22
Код

processBuilder.inheritIO()

Круто, спасибо! Лабу сдал)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)