2011-01-19 2 views
2

Мне удалось заставить ProcessBuilder запускать внешние скрипты, но мне все же нужно заставить Java общаться с внешними скриптами. Я полагаю, что я должен получать потоки ввода/вывода из процесса и использовать их для отправки и получения данных. У меня большая проблема с вводом скриптов. Кажется, что я могу получить вывод из сценариев, используя функцию печати сценария, но я не могу заставить скрипты регистрировать входные данные из основной программы java.Получение Java для работы с Python, C, C++ и Ruby

Этот вопрос включает в себя четыре языка, поэтому это нормально, если вы публикуете только ответ на один язык.

ответ

2

Метод getOutputStream() на класс Process возвращает поток, который вы можете записать в Java, который подключается к потоку stdin процесса. Вы должны уметь читать это, так как обычно вы читаете stdin для каждого языка (например, cin для C++, scanf для C, STDIN.read для Ruby, не знаете Python!)

Если это то, и вы не работаете (ваш вопрос звучит так, как будто это может быть, но это трудно сказать), можете ли вы опубликовать какой-то код, чтобы было легче увидеть, что вы можете делать неправильно?

+0

Спасибо за команды для C++, C и Ruby! Я получил Python для работы через raw_input – Curlystraw

0

Что касается получения Java для общения с Python, считаете ли вы Jython?

Что касается C и C++, то стандартная идея заключается в использовании Java Native Interface. После того, как вы сможете поговорить с C/C++, вы можете использовать C/C++ для общения практически с любым другим языком, включая Python и Ruby.

1

Возможно, вы должны использовать стандартный механизм межпроцессного процесса, например, трубу или сокет.

Все эти языки имеют библиотеки, доступные для обоих, и эта стратегия позволяет устанавливать связь между любыми 2 из ваших процессов (Java/Ruby, Ruby/Python, Java/C и т.д.)

Смежные вопросы