小编典典

如何解除对Java启动进程的阻止?

java

当从cmd行执行某些命令(比如说“ x”)时,我收到以下消息:“ …按任意键继续…。”。因此,它等待用户输入解除阻止。

但是当我从Java执行相同的命令(’x’)时:

Process p = Runtime.getRuntime().exec(cmd, null, cmdDir);
// here it blocks and cannot use outputstream to write somnething
p.getOutputStream().write(..);

代码块…

我试图在进程的输出流中写入一些内容,但是我该怎么做,以确保代码从未到达该行?


阅读 316

收藏
2020-11-30

共1个答案

小编典典

我认为(虽然不能确定)您是在谈论Windows而不是Unix?

如果是这样,则命令行进程实际上可能不是在等待按键(或输入),stdin而是在做与旧DOS kbhit()功能等效的操作。

AFAIK无法使该功能相信没有实际按下键就已经按下了键盘。

要测试该理论,请创建一个文本文件“ input.txt”,其中包含一些空行,然后运行:

foo.exe < input.txt

这将显示您的程序是在等待stdin还是在其他地方等待。

2020-11-30