我有一个C程序,它是从Java程序中生成的。C程序是我自己写的,而Java程序是第三方的。Java程序以某种方式设置好了stdin/stdout,使其可以与我的程序进行通信。
这个系统在32位Windows XP下运行多年一直很稳定。我刚刚购买了一台64位Windows 7的新机器。当我运行Java程序(从“dos”框中),它成功地启动了我的程序,并向我的程序发送了一个命令,我的程序成功地执行了该命令。但当我的程序回到它的循环时,问题就出现了。
这个系统在32位Windows XP下运行多年一直很稳定。我刚刚购买了一台64位Windows 7的新机器。当我运行Java程序(从“dos”框中),它成功地启动了我的程序,并向我的程序发送了一个命令,我的程序成功地执行了该命令。但当我的程序回到它的循环时,问题就出现了。
inputchar = getc(stdin);
getc(stdin)永远不会返回。
提示:我对Java几乎一无所知,一开始就遇到了一些运行问题。似乎在从java.com安装后,如果我去“dos”框中输入“java”,我只会得到一个未识别的命令错误。然后我在windows\sysWOW64上找到了一个java.exe,所以我输入“windows\sysWOW64 java -jar blah blah...”,然后程序看起来像是在运行(至少在getc(stdin)问题出现之前是这样的)。
有什么想法可能出了什么问题?我需要一个特殊的64位Windows 7 Java吗?它是可能只是一个编写不良的Java程序,其错误只在新操作系统上运行时表现出来吗?还是更可能是我的问题?
编辑:我的C程序在64位Windows 7机器上单独运行良好(即不是从Java生成的)。
编辑:如果我输入“\windows\syswow64\java -version”,那么我会得到...
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)
编辑:在旧的XP计算机上,Java版本为1.6.0_17-b04。
编辑:我没有为新机器重新构建我的C程序。我只是复制了旧的32位版本。
编辑:Java程序发送的第一个“命令”是以“换行符”字符(ASCII 10)结尾的字符串。