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

ProcessBuilder和Process.waitFor(),要等待多长时间?

冷吉星
2023-03-14
问题内容

我正在使用ProcessBuilder类和Process类从Java执行一个.exe文件。解释我在做什么:

 builder = new ProcessBuilder(commands);
 builder.redirectErrorStream(true);
 Process process = builder.start();
 process.waitFor();

我只是想知道,“ waitFor()”等待了多长时间?是等待直到执行我的.exe,还是等到执行完成?

我的.exe是编译好的AutoIt脚本。这意味着,可能需要一些时间才能完成诸如鼠标移动之类的交互。因此,我需要知道在调用.exe之后我的Java代码执行是否继续进行,或者它是否真的在等待它。

我想要实现的是轮流执行两个脚本,但是恐怕我的Java代码正在执行第二个脚本,而第一个脚本仍在运行。有没有人解决这个问题?我为任何想法感到高兴。


问题答案:

您当前的执行线程将被阻塞,process.waitFor()直到进程终止(即执行完成)。来源在这里

还要注意,如果进程已经终止:waitFor()将不会被阻止。我不知道您在问题中输入的代码是否正是您在运行的代码…但是您必须小心并为脚本的每次执行重新创建一个新的Process实例(即,不只是多次调用start相同的过程:第一次执行后将无法运行)



 类似资料:
  • 问题内容: 在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗? 问题答案: 如果使用的是jQuery $ .ajax调用,则可以设置timeout属性以控制请求以超时状态返回之前的时间。超时设置为毫秒,因此只需将其设置为很高的值即可。您也可以将其设置为0(表示“无限”),但我认为您应该设置一个较高的值。 注意:“无限制” 实际上是默认设置,但大多数浏览器都有默认超时值。 当

  • 问题内容: 之间有什么区别: 和 和 问题答案: 注意事项 : 这个答案仅涵盖了系列和系列之间的时序差异。。 为了这个答案的目的,我将使用一些示例方法: 是一个函数,它需要一个整数毫秒,并返回一个承诺,该承诺将在该毫秒后解析。 是一个函数,它需要一个整数毫秒,并返回一个承诺,该承诺将在该毫秒后被拒绝。 调用将启动计时器。在所有延迟完成后,可以使用等待一些延迟来解决,但请记住它们是同时执行的: 例子

  • 问题内容: 之间有什么区别: 和 和 问题答案: 注意事项: 这个答案仅涵盖了await系列和系列之间的时序差异Promise.all。请务必阅读@mikep的综合答案,其中也涵盖了错误处理方面更重要的区别。 出于此答案的目的,我将使用一些示例方法: res(ms) 是一个函数,它需要一个整数毫秒,并返回一个承诺,该承诺将在该毫秒后解析。 rej(ms) 是一个函数,它需要一个整数毫秒,并返回一个

  • Selenium C#在抛出超时异常之前等待的最大显式超时是多少? 有时我们正在测试的应用程序变得非常慢,最多需要4分钟才能加载。我想添加一个等待时间,这样它最多会等待5分钟。 我已经尝试过这个代码 但是它在2分钟左右抛出超时异常。

  • 问题内容: 我想知道WebDriver等待超时和隐式等待超时之间的技术差异。 问题答案: 如文档中所述: 在内部设置将用于所有连续搜索的超时。如果找不到该元素,它将尝试在指定的时间内反复查找该元素。它仅执行此操作,不能强制执行其他任何操作- 它等待元素显示。 ,或者只是您用于特定搜索的一次计时器。它具有更大的可扩展性,意味着您可以将其设置为等待可能需要的任何条件。通常,您可以使用一些预构建的元素来