我想放弃进程中的重定向错误。 我也知道apache中NullWriter的存在。 但是,进程只接受文件,不是吗?
据我所知,例如/dev/null 这样的特殊文件(空设备)在 Windows 中有另一个路径..
所以我的问题是我是否以及如何获得这样的路径? 否则,我应该为每个操作系统或平台手动设置一个吗?
我的代码是
File bitBucket = isUnix())? new File("/dev/null"): new File("NULL");
ProcessBuilder pb = new ProcessBuilder("mpirun", "-np", 100, "mpi-tip").redirectError(bitBucket);
pb.start();
我想更改第一行 文件但Bucket = getNullDevice();//像这样。
如果只有 ProcessBuilder 接受 Writer,我可以使用 NullWriter...
最佳答案
也许您还需要提供更多信息。我假设您想抑制 mpirun
的错误输出。默认情况下,启动进程的 stdout
和 stderr
输出不会合并到 JVM 输出中。
在下面找到一个演示片段
to_stderr.sh - 打印到 stdout
和 stderr
的帮助程序脚本
#!/bin/bash
(>&2 echo "to stderr")
echo "to stdout"
验证脚本
# supress output to stdout
./to_stderr.sh > /dev/null
to stderr
# supress output to stderr
./to_stderr.sh 2> /dev/null
to stdout
现在在 Java 中
class Main {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("./to_stderr.sh");
pb.start();
}
}
编译并运行
javac Main.java && java Main
只要您不重定向进程中的错误或输出,这不会在控制台上输出任何内容。
那么为什么你想要/需要重定向到 /dev/null
?
关于java - 有没有办法获得像unix中/dev/null这样的位桶的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266809/