我用ProcessBuilder運行一個同時具有輸出和輸入的程式(程式先列印輸出,后輸入),然后我想用getInputstream獲取程式運行的列印輸出,用getOutputstream進行輸入(此處我用了多執行緒),結果getInputstream阻塞在read那里,如果不進行輸入,就得不到列印輸出的內容。
可是程式的邏輯明明是先列印輸出的,而且在Windows的cmd中運行程式也是正常,為啥在這里用ProcessBuilder運行就只能先輸出才行呢?我嘗試過修改InputStream和OutputStream宣告順序,依然不行。求幫助分析!
InputStream inputStream = process.getInputStream();
thread = new Thread(new Runnable() {
@Override
public void run() {
try {
int it = 0;
do {
int count = 0;
while (count == 0) {
count = inputStream.available();
}
it = inputStream.read();
Log.d("ddd", "read="+ it);
} while (it != -1);
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
OutputStream os = process.getOutputStream();
bufferedWriter = new BufferedWriter(new OutputStreamWriter(os));
try {
bufferedWriter.write("5\n");//只有進行輸入,上面才能執行read,啥原因?
} catch (IOException e) {
e.printStackTrace();
}
uj5u.com熱心網友回復:
為啥沒有回復轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61717.html
標籤:Java相關
下一篇:apk安裝失敗
