2014-12-15 5 views
0

У меня есть два отдельных кода, один написан на C++, а другой - в java. Теперь я хочу сделать это: сначала я хочу запустить C++-код, а затем я хочу предоставить выходной файл этой программы второй программе, написанной в java, в качестве ввода. Мне нужно сделать это полностью автоматически. Есть ли способ сделать это?работает два разных языка программирования один за другим автоматически

Я имею в виду, Я наберу одну команду в терминал и что я объясню выше.

Нужно ли мне писать сценарий оболочки?

+0

Кстати, я работаю на ubuntu 12.04 LTS, но было бы лучше, что я буду поддерживать кросс-платформу. – stackunderflow

+0

Вы можете использовать 'Java Native Invocation', но сценарий оболочки будет намного проще. – Everv0id

+0

JNI - один из вариантов, но мне он никогда не нравился. –

ответ

1

Действительно ли имеет значение, какие языки программирования вы используете, что является первым или вторым? Все, что вам нужно, состоит из 2 исполняемых файлов, а затем с использованием сценариев оболочки, используйте «pipe» для пересылки вывода из одной программы в другую.

например. ls -l | sed -e "s/[aeio]/u/g"

Update:

cppprogram1 | java program2 cppprogram1.txt

cppprogram1.txt является выходной файл, созданный с помощью cppprogram1.

+0

Так как у меня нет опыта работы с оболочкой, я должен спросить об этом, строка кода, предоставленная вами выше, не делает того, что я хочу правильно? Это просто пример – stackunderflow

+0

Нет, конечно, это пример того, как вы можете использовать трубу. "|" – user1

+0

Почему такие неприятности? По крайней мере, Java позволяет использовать '<' and '>' операторов для перенаправления 'System.in' и' System.out'. Я полагаю, что 'cin' и' cout' в C++ могут использоваться аналогичным образом. – Everv0id

-1

В зависимости от вашей ситуации. Если вы просто хотите вывести вывод исполняемого файла, используйте pipe. Бинарный файл C++ выводит на stdout, а файл java будет читать из stdin. Если вам нужно что-то более сложное, вам, вероятно, потребуется использовать одну из таких сериализационных библиотек, таких как Thrift.

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