gpt4 book ai didi

java - 如何使用 ProcessBuilder 运行和终止异步重定向

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:35 24 4
gpt4 key购买 nike

我想将命令的输出重定向到文本文件,并且我想使用 ProcessBuilder 运行命令(在 Linux 或 Unix 上)。我希望重定向异步运行,我希望 Java 进程存储重定向命令的 pid,并在不再需要重定向时终止重定向进程。

我看到 ProcessBuilder.start() 返回 Process具有方法 Proccess.pid() 的对象。我还看到一个方法 Process.waitFor() 向我暗示重定向命令在通过 Process Builder 运行时本质上是异步的。

所以我的问题是,我能否使用 ProcessBuilder 在异步进程中运行重定向命令,使用 Process 获取 PID,然后终止正在运行的重定向进程全部通过省略 Process.waitFor()?这完全可能吗?

谢谢

最佳答案

是的,Process类(class)有destroy()destroyForcibly()杀死正在运行的进程的方法。从 Java 9 开始 ProcessHandle添加了类,它也有同名的方法。

如果您有 pid 但没有 Process 对象,您可以使用 ProcessHandle.of(long pid) 为给定其 pid 的正在运行的进程获取 ProcessHandle方法,但如果您自己启动了 Process,则只使用从 ProcessBuilder.start() 返回的 Process 对象或获取ProcessHandle 从它使用 Process.toHandle()方法。

关于java - 如何使用 ProcessBuilder 运行和终止异步重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50111735/

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