Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ProcessBuilder放弃out/err的独立于平台的方法_Java_Processbuilder_Dev Null - Fatal编程技术网

Java 使用ProcessBuilder放弃out/err的独立于平台的方法

Java 使用ProcessBuilder放弃out/err的独立于平台的方法,java,processbuilder,dev-null,Java,Processbuilder,Dev Null,在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"))

在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的情况(但我不确定是否存在这种情况)


我知道和类似的问题,但是使用no-op
OutputStream
仍然需要旋转一个线程来主动放弃输出-我更愿意让操作系统为我做这件事。

从Python模块的行为判断,问题中的代码片段可能就足够了,依次定义为(as
nul
)或(as
/dev/null


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

在阅读了本主题的所有其他堆栈溢出线程之后,我做了同样的事情。我认为这是一个体面的解决办法。