gpt4 book ai didi

java - Java中如何等待进程

转载 作者:行者123 更新时间:2023-12-02 09:09:40 24 4
gpt4 key购买 nike

在下面的代码中,我尝试执行一个脚本,这需要相当长的时间才能完成。所以,我已经尝试使用process.waitfor()但它并没有让脚本完成。有什么想法可以让它发挥作用吗?

ProcessBuilder pb = new ProcessBuilder(osShell);
Process process = pb.start();
PrintWriter pyCon = new PrintWriter(process.getOutputStream());
pyCon.println("cd " + videoDir);
System.out.println("Executing python file: "+ command);
pyCon.println(command);
//Here, I need a piece of code which let's my command run in peace
pyCon.close();

System.out.println(convertStreamToString(process.getInputStream()));
process.waitFor();

最佳答案

通过关闭 shell 进程的标准输入,您几乎告诉它一切都结束了。 shell 很可能会杀死子 python cmd,或者至少不会耗尽或转发 python stdout/stderr 到它自己的 shell stdout/stderr。

尝试等待来自 python cmd 的一些预期结束标记。然后只关闭stdin。当然,从进程中排出所有 stdout/stderr。

当主线程控制/等待进程时,通常会看到另外 2 个线程只是从 stdout/stderr 中抽取字节。请记住,如果不将字节抽出,管道可能会填满并阻塞子端,从而阻止其终止。这些管道通常非常小(例如 512 到 2k 字节 - 显然是可测试的)。

关于java - Java中如何等待进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com