У меня есть программа на C, которая генерируется из программы Java. Программа C - моя, а программа Java - сторонняя. Java-программа каким-то образом устанавливает все, чтобы она связывалась с моей программой через stdin/stdout.Связь stdin/stdout между Java-программой и программой C под 64-битными окнами 7
В течение многих лет система работает под 32-разрядной Windows XP. Я только что купил новую машину с 64-разрядной Windows 7. Когда я запустил программу Java (из окна «dos»), она успешно завершила мою программу и отправила моей программе команду, с которой моя программа успешно действовала. Но когда моя программа вернулась к своей петле с
inputchar = getc(stdin);
getc (stdin) никогда не возвращается.
Ключ: я почти ничего не знаю о Java, и у меня были проблемы с его запуском в первую очередь. Казалось, что после установки его с java.com, если я перешел в поле «dos» и набрал «java», я получил нераспознанную ошибку команды. Затем я нашел java.exe на windows \ sysWOW64, поэтому набрал «windows \ sysWOW64 java -jar blah blah ...», а затем программа выглядела так, как будто она работала (по крайней мере, до проблемы getc (stdin)).
Любая идея, что может пойти не так? Нужна ли мне специальная 64-битная Windows-7 Java? Возможно ли, что его просто плохо написанная программа Java, чьи ошибки проявляются только при работе на новой ОС? Или, скорее всего, я буду?
EDIT: моя программа на C работает отлично (т. Е. Не из java) на 64-битной машине Windows 7.
EDIT: Если я типа "\ Windows \ syswow64 \ Java -версии", то я получаю ...
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
EDIT: На старой XP поле версия Java была 1.6.0_17-b04
EDIT: Я не перестроил свою программу на C для новой машины. Я просто скопировал старую 32-битную версию.
EDIT: первая «команда», которую посылает программа Java, представляет собой строку, заканчивающуюся символом «line feed» (ASCII 10).
C или C++? Ваш заголовок говорит о C++, но везде, где это похоже C. –
На самом деле это программа, которая была разработана более 25 лет в C, но затем за последние 6 месяцев была запущена на C++. Его 99.9% old-C, следовательно, используется код типа getc(). – Mick
Я знаю, что, я помечаю его как C и C++! – Mick