0
我想從一個java程序運行一個shell腳本。這個shell腳本調用一個需要一個大文件作爲資源的系統庫。shell進程java同步
我的java程序爲文檔中的每個單詞調用此腳本。如果我使用Runtime.exec()一次又一次地調用此腳本,所花費的時間非常長,因爲資源加載需要很長時間。
爲了克服這一點,我覺得寫的shell腳本如下(以使其在後臺持續運行):
count=0
while count -lt 10 ; do
read WORD
//execute command on this line
done
我需要在我的java檢索命令的輸出編程並進一步處理。 我應該如何編寫I/O操作來完成這項任務?
我已經嘗試將單詞寫入進程的輸出流,並從進程的輸入流讀回輸出。但是這不起作用,並引發了破損的管道異常。
try {
parseResult = Runtime.getRuntime().exec(parseCommand);
parsingResultsReader = new BufferedReader(new InputStreamReader (parseResult.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader (parseResult.getErrorStream()));
parseResultsWriter = new BufferedWriter(new OutputStreamWriter((parseResult.getOutputStream())));
} catch (IOException e) {
e.printStackTrace();
}
parseResultsWriter.write(word);
parseResultsWriter.flush();
while ((line = parsingResultsReader.readLine()) != null) {
// capture output in list here
}
請這個問題
「外殼」進程是否需要獨立於虛擬機,還是虛擬機可以自行啓動? – Romain