亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使管道使用Runtime.exec()?

如何使管道使用Runtime.exec()?

開滿天機 2019-06-20 15:40:19
如何使管道使用Runtime.exec()?考慮以下代碼:String commandf = "ls /etc | grep release";try {     // Execute the command and wait for it to complete     Process child = Runtime.getRuntime().exec(commandf);     child.waitFor();     // Print the first 16 bytes of its output     InputStream i = child.getInputStream();     byte[] b = new byte[16];     i.read(b, 0, b.length);      System.out.println(new String(b));} catch (IOException e) {     e.printStackTrace();     System.exit(-1);}該程序的輸出是:/etc:adduser.co當然,當我從shell運行時,它按預期工作:poundifdef@parker:~/rabbit_test$ ls /etc | grep release lsb-release互聯網告訴我,由于管道行為不是跨平臺的,在Java工廠生產Java的聰明人不能保證管道工作。我該怎么做?我不打算使用Java構造來進行所有的解析,而不是grep和sed,因為如果我想改變語言,我將被迫用該語言重寫我的解析代碼,這完全是不可能的。如何讓Java在調用shell命令時進行管道和重定向?
查看完整描述

3 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

編寫一個腳本,執行腳本而不是單獨的命令。

管道是外殼的一部分,所以您也可以這樣做:

String[] cmd = {"/bin/sh","-c","ls /etc | grep release"};Process p = Runtime.getRuntime().exec(cmd);


查看完整回答
反對 回復 2019-06-20
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

創建一個運行時來運行每個進程。從第一個運行時獲取OutputStream,并從第二個運行時將其復制到InputStream中。


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 969 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號