我有一个java程序将打印出大量的文字。 有时候,我只是想看看一点的文字。 随着正常程序中,我可以这样做:
$ myprog | head
我就看到MYPROG 10行输出,它会立即退出。 但是用java,如果我这样做:
$ java MyClass | head
我得到的第10行输出,但是java进程将不会退出,直到它与所有的处理完成。 这就像Java不关心标准输出(System.out的)消失,且头部的过程是死了。
所有其他程序或者退出默默地,像猫:
$ cat /etc/group | head
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
或用水管坏的错误/异常,像蟒蛇退出:
$ python -c 'while True: print "hi"' | head
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
Traceback (most recent call last):
File "<string>", line 1, in <module>
IOError: [Errno 32] Broken pipe
调用的System.out.println时,如何能获取Java引发异常()时,我管输出到像头? 我很想能够做到这样的:
try {
while(true) {
System.out.println("hi");
}
} catch(BrokenPipeException e) {
// exit gracefully
}