当从命令行执行某些命令(比如说“x”)时,我收到以下消息:
“....按任意键继续 。 。 。”。因此它会等待用户输入来解锁。
但是当我从 java 执行相同的命令('x')时:
Process p = Runtime.getRuntime().exec(cmd, null, cmdDir);
// here it blocks and cannot use outputstream to write somnething
p.getOutputStream().write(..);
代码块...
我尝试向进程的输出流中写入一些内容,但是由于代码永远不会到达该行,我该怎么做?
我认为(虽然不能确定)你说的是 Windows 而不是 Unix?
如果是这样,则命令行进程可能实际上并未等待按键(或输入)stdin
而是执行与旧 DOS 相同的操作kbhit()
功能。
AFAIK 没有办法让该函数相信键盘已被按下而不实际按下某个键。
为了测试这个理论,创建一个文本文件“input.txt”,其中包含一些空行,然后运行:
foo.exe < input.txt
这将显示您的程序是否正在等待stdin
或其他事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)