gpt4 book ai didi

java - 使用 ProcessBuilder 丢弃 out/err 的独立于平台的方法

转载 作者:行者123 更新时间:2023-12-01 19:19:23 25 4
gpt4 key购买 nike

在 Unix 上,您可以使用以下命令丢弃进程的输出:

pb.redirectOutput(new File("/dev/null"));

在 Windows 上,您需要使用 NUL。对于支持任意平台,是否有比以下代码片段更好的选择?

File devNull = new File("/dev/null");
if (devNull.exists()) {
pb.redirectOutput(devNull);
} else {
pb.redirectOutput(new File("NUL"));
}

这看起来很笨拙,但 API 中没有可供使用的 ProcessBuilder.Redirect.NULL 字段或似乎没有任何其他方法来执行此操作。

我还有点担心这不能处理非 Unix-非 Windows 情况(但我不确定是否存在这种情况)。

我知道 platform-independent /dev/null output sink for Java和类似的问题,但是使用无操作 OutputStream 仍然需要旋转一个线程来主动丢弃输出 - 我更愿意让操作系统为我做这件事。

最佳答案

从Python的行为来看subprocess模块问题中的代码片段可能就足够了。 subprocess.DEVNULL uses os.devnull ,依次 comes from os.path它在 ntpath 中定义(如nul)或posixpath (如/dev/null)。

这些似乎是 Python 支持的唯一路径,因此类似地,在 Java 中适当使用 nul/dev/null 就足够了。 Java 可能有一个更优雅、独立于平台的选项,但如果是这样,我还没有找到。

关于java - 使用 ProcessBuilder 丢弃 out/err 的独立于平台的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41248404/

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