로/ERR을 폐기하기 : Windows에서플랫폼에 독립적 인 방법은 당신이 가진 프로세스의 출력을 폐기 할 수 유닉스 ProcessBuilder를
pb.redirectOutput(new File("/dev/null"));
동안 당신이 대신 NUL
를 사용해야합니다. 임의의 플랫폼을 지원하기위한 다음 스 니펫보다 더 좋은 옵션이 있습니까?
File devNull = new File("/dev/null");
if (devNull.exists()) {
pb.redirectOutput(devNull);
} else {
pb.redirectOutput(new File("NUL"));
}
이것은 미봉책 보이지만, 사용하는 ProcessBuilder.Redirect.NULL
필드 또는 겉으로 API에서이 작업을 수행하는 다른 방법이 없습니다.
나는 유닉스가 아닌 비 Windows의 경우를 처리하지 않는다는 것에 약간의 걱정이있다. (그런 경우는 있을지 모르겠다.)
저는 platform-independent /dev/null output sink for Java과 비슷한 질문을 알고 있지만 no-op를 사용하면 OutputStream
은 여전히 스레드를 회전시켜야 출력을 능동적으로 폐기 할 수 있습니다. OS가 나를 대신하도록 허용하고 싶습니다.
이 주제에 대한 다른 모든 스택 오버플로 스레드를 읽은 후에도 동일한 작업을 수행했습니다. 나는 이것이 적절한 해결책이라고 생각한다. –