One more minor addition to ProcessBuilder
Roger Riggs
Roger.Riggs at Oracle.com
Tue Jul 28 13:35:19 UTC 2015
Hi David,
ok, it seems very minimal if implemented like a writeable file:
public static abstract class Redirect {
+ private static final File nullFile = AccessController.doPrivileged(
+ (PrivilegedAction<File>) () -> {
+ return new File((System.getProperty("os.name")
+ .startsWith("Windows") ? "NUL" : "/dev/null"));
+ }
+ );
+
...
+
+ /**
+ * Indicates that subprocess output will be discarded by writting
+ * to the <em>null</em> device.
+ *
+ * <p>It will always be true that
+ * <pre> {@code
+ * Redirect.DISCARD.file() the null filename appropriate for the OS
+ * Redirect.DISCARD.type() == Redirect.Type.WRITE &&
+ * Redirect.DISCARD.append() == false
+ * }</pre>
+ */
+ public static final Redirect DISCARD = new Redirect() {
+ public Type type() { return Type.WRITE; }
+ public String toString() { return type().toString(); }
+ public File file() { return nullFile; }
+ boolean append() { return false; }
+ };
+
You're welcome to drive the addition yourself.
In some cases, writing the tests can take more time than the feature.
Roger
On 7/27/2015 2:09 PM, David M. Lloyd wrote:
> Roger & co.:
>
> Since you're already on the topic of manipulating pipes, I thought I'd
> mention one very small yet very useful potential enhancement.
>
> It would be very handy to be able to specify a NULL/bit-bucket
> source/destination for pipes. For the target process' input, the user
> can generally (I believe) just close the stream, but for output, there
> isn't really a good option. While this is possible to achieve by
> redirecting to /dev/null on UNIX-likes and NUL (iirc) on Windows,
> having to do platform detection to decide where this device is seems
> overly cumbersome.
>
> Having a ProcessBuilder.Redirect#DISCARD or similar would be quite
> useful, and should be fairly straightforward I think.
More information about the core-libs-dev
mailing list