Я сомневаюсь, что он закрывает System.out с точки зрения Java-прог. Он может перенаправлять в / dev / null, но головному руководителю будет проще прекратить прослушивание потока вывода программы Java, то есть exit ().
Вы можете посмотреть на источник 'cat', чтобы увидеть, выполняет ли он какое-либо обнаружение состояния выходного потока. Если это так, вам придется поместить подобный код в вашу программу MyProgramReadALargeFile. В противном случае головка может делать то, что не может обнаружить процесс, питающий трубу.
Если скорость, с которой заканчивается пример 'cat', является подозрительной, попробуйте выполнить
cat my_large_file.txt > /dev/null
и посмотрим, так ли быстро.