当前位置: 首页 > 面试题库 >

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

富涛
2023-03-14
问题内容

当从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(..);

代码块…

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


问题答案:

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

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

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

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

foo.exe < input.txt

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



 类似资料:
  • 我使用的是p=运行时。getRuntime()。exec(“myScript.sh”);作为按钮a的addActionListener(new ActionListener())的actionPerformed(ActionEvent evt)的一部分。 我想有一个方法来终止进程。我试图创建另一个按钮(按钮B)来调用p.destroy()。但是,看起来在单击按钮A后,它启动了进程,并且只有在进程完

  • 问题内容: 如果我通过或获得Java中的过程对象,则可以等待它,就像,或者可以使用它杀死它,就像不推荐使用的那样。 但是:如何找到过程对象的pid?我在《官方文档》中没有找到执行此操作的方法。我可以用Java做到这一点吗?如果是这样,怎么办? 问题答案: 这个家伙叫bash获取PID。我不确定是否有Java解决此问题的方法。 来源:http : //www.coderanch.com/t/1093

  • 问题内容: 有没有办法用Java启动流程?在.Net中,这可以通过例如: Java是否具有等效功能,因此我可以让用户找到该应用程序,然后将其用于任何OS? 问题答案: http://www.rgagnon.com/javadetails/java-0014.html 你可以使用系统属性或类似方法获取本地路径。 http://download.oracle.com/javase/tutorial/e

  • 问题内容: 我正在开发一个用Java编写的程序,对于某些操作,它使用用户配置的命令行启动外部程序。当前它使用并且不保留引用(启动的程序是文本编辑器或存档实用程序,因此不需要系统输入/输出/错误流)。 但是,这有一个小问题,即当Java程序退出时,直到所有启动的程序都退出后,它才真正退出。 如果启动的程序完全独立于启动它们的JVM,我将更喜欢它。 目标操作系统是多个,最低要求是Windows,Lin

  • 问题内容: 我尝试使用范围类型APPLICATION和带有@ Create,@ Beg的方法来注释类,但这似乎不起作用。 我想要的是在应用程序启动时立即启动无限循环。 问题答案: 如果希望在初始化后立即执行方法,则可以使用以下注释:

  • 问题内容: 我很难找到一种方法来启动,停止和重新启动Java中的线程。 具体来说,我在中有一个类Task(当前实现)。我的主应用程序需要能够在线程上启动此任务,在需要时停止(杀死)该线程,有时还可以杀死并重新启动该线程… 我的第一次尝试是与,但我似乎找不到办法重新启动任务。当我使用任何将来的呼叫失败时,因为是“关机” … 那么,我该怎么做呢? 问题答案: 一旦线程停止,你将无法重新启动它。但是,没