我有一個Java程序打印到標準輸出。如果輸出連接到head
,那麼shell在完成任務後不會立即返回,而是等待Java程序完成其所有工作。Java編傳輸並立即返回
所以我的問題是:如何編寫Java程序,以便shell立即返回,就像cat ... | head
?
這是我的意思的例子:
這裏立即外殼收益爲head
不花時間,打印前十行,不管bigfile.txt
有多大:
time cat bigfile.txt | head
...
real 0m0.079s
user 0m0.001s
sys 0m0.006s
這裏,而不是前十行快速打印但外殼不會返回,直到處理完所有文件:
time java -jar DummyReader.jar bigfile.txt | head
...
real 0m18.720s
user 0m16.936s
sys 0m2.212s
DummyReader.jar
很簡單,只要我可以使它:
import java.io.*;
public class DummyReader {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new FileReader(new File(args[0])));
String line;
while((line= br.readLine()) != null){
System.out.println(line);
}
br.close();
System.exit(0);
}
}
我的設置:
java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-10M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
在MacOS 10.6.8
所以,你基本上需要'頭'來打敗你的Java程序後,它打印了前10行? –
@ tobias_k是的,沒錯,我想要(或者任何下游)殺死java程序。 – dariober
我不確定這是如何'頭'的作品。也許你寧願寫自己的「殺頭」功能。或者將一個參數傳遞給Java腳本,告訴它在x行後停止。 –