2012-01-02 2 views
0

Существует программа в Java (Minecraft) и для ее части сервера, она открывается в терминале и запрашивает пользователя для команд, а также дает обратную связь для загрузки прогресса и других вещи. Как я могу сделать «оболочку» C++ для автоматической отправки команд терминалу и получения ответа?Ввод и вывод исполняемого файла в C++

Я мог бы автоматизировать такие команды, как say и kick с элементами GUI. Я запускаю mac с OSX Lion.

ответ

2

Предположительно читает и пишет stdin/stdout. Вы должны искать выполнение двоичного файла (в данном случае java.exe) в C++ и как читать и писать на него. Кроме того, вы можете написать оболочку на Java, которая дает вам контроль без необходимости синтаксического анализа вывода текста.

+0

Извините, я забыл поставить ту ОС, в которой я работал. Было бы так же, если бы я работал с Mac? – alexy13

+0

Да. Исполняемым в этом случае будет/usr/bin/java, но концепция одинаков. –

0

Ответ на этот вопрос будет зависеть от операционной системы, поскольку разные системы используют разные подходы, как работать со стандартными входными и выходными каналами. В системе UNIX вы должны создать канал (2) (или два, если хотите записать стандартный вывод и стандартную ошибку отдельно), fork (2) «сервер», используйте close (2) и dup (2), чтобы поставить различные дескрипторы файлов на место, а затем execve (2) фактическая программа. После этого вы можете читать/записывать различные дескрипторы.

+0

Yikes, это много ... вещей. Есть ли пример, который может быть доступен? – alexy13

+0

Ну, мне нужно будет либо написать, либо пойти в Google. Если посмотреть на соответствующие теги для UNIX и/или POSIX, возможно, вы также найдете FAQ здесь (не пробовал, хотя). Ключ - это «труба», т. Е. Это то, что я бы искал, если попытаюсь найти пример. –

+0

Спасибо за ваш ответ! – alexy13

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