2010-02-04 5 views
1

У меня есть сторонняя Java-программа, называемая kgsgtp.jar, которая должна связываться с моей собственной программой C++ (но в основном только с C). Документация для Java программных состояний:Входная связь между двумя программами

=====================

Вам просто нужно, чтобы убедиться, что STDIN для kgsGtp он подключен к Выход двигателя и выходы двигателя для kgsGtp подключены к входу двигателя . Обычно самый простой способ сделать это - развить и выполнить kgsGtp из вашего двигателя.

=====================

Теперь я являюсь достаточно компетентным программистом и чувствовать, что я мог бы устроить все, что, учитывая лишь несколько больше подсказок. Я подозреваю, что если описание было расширено до erm, 10? линии вместо трех с половиной, то я бы это отсортировал в мгновение ока.

Я предполагаю, что то, что документ означает путем разметки, использует WinExec() или CreateProcess() в моей программе для выполнения java-программы? Я также предполагаю, что, возможно, когда я использую правильную функцию, то факт, что stdin одной программы, соответствующий stdout другого, произойдет автоматически?

+0

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

+0

Dupe of http://stackoverflow.com/questions/2186648/stdin-stdout-communication-between-java-program-and-c-program-under-64-bit-window вчера спросил того же пользователя – 2010-02-04 10:11:20

+0

@neil. Нет, это не так. Программа java позволяет запускать более одного метода. Первый не работает, поэтому я пытаюсь заставить другой метод работать. – Mick

ответ

4

Это описание для Unixes, где последовательность трубы(), dup2(), вилка()/ехес() вызовы будут быть использованным для этого.

Посмотрите на фрагмент кода в ответе от denis здесь: How do I get console output in C++ with a Windows program?, должно быть, вы начали.

Edit: более полный пример здесь: http://support.microsoft.com/kb/190351

+0

Это выглядит многообещающе ... позвольте мне просто проверить дважды. Я понимаю это. В своем коде, когда вы достигаете комментария «// readfile и/или файл записи» ... означает ли это, что с этого момента на любом printf() я перейду к stdin teste.exe и наоборот? – Mick

+0

Нет, это означает, что чтение из hRead handle считывается из stdout/err teste.exe. В примере нет привязки stdin файла teste.exe, но это было бы похоже - создайте еще один канал и установите hStdInput в структуре STARTUPINFO. Добавлена ​​ссылка на другой пример. – Anonym

+0

Спасибо за помощь. – Mick

0

Что вам нужно, это эквивалент POSIX DUP() на окнах могут быть this

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