我試圖運行下面的命令,無法運行grep命令
Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");
在安卓(JAVA),但我得到的錯誤。如果我運行下面的指令,
Process p = Runtime.getRuntime().exec("/system/bin/lsof ");
該文件被成功保存。任何人都可以告訴什麼是錯誤?其實我想列出並檢查媒體服務器服務是否正在運行。
我試圖運行下面的命令,無法運行grep命令
Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");
在安卓(JAVA),但我得到的錯誤。如果我運行下面的指令,
Process p = Runtime.getRuntime().exec("/system/bin/lsof ");
該文件被成功保存。任何人都可以告訴什麼是錯誤?其實我想列出並檢查媒體服務器服務是否正在運行。
問題是Runtime.getRuntime().exec(...)
不知道如何處理shell語言。在Linux/Unix平臺上,你會因此像這樣:
Process p = Runtime.getRuntime().exec(new String[]{
"/bin/sh", "-c", "/system/bin/lsof | grep mediaserver"});
然而,(顯然)Android不具備默認命令shell /命令提示符。因此,無論您需要在設備上標識並安裝合適的外殼,還是「手動」構建管道,即通過創建「管道」文件描述符,並且執行這兩個命令,以便lsof
寫入管道,grep
從中讀取。
也許答案是這樣運行它...
Process p = Runtime.getRuntime().exec(
"adb shell /system/bin/lsof | grep mediaserver");
(交互式嘗試從Java做運行前亞行的「殼......」的一部分。)
好,既然你是得到錯誤的人,也許你可以告訴我們錯誤是什麼。也許那麼我們可以幫助你,不是嗎? – verdesmarald
首先猜測?既然你必須把/ system/bin放在lsof命令的前面,也許你可以嘗試把grep的路徑放在那裏呢?即使用/ system/bin/lsof |/system/bin/grep mediaserver「或任何grep的路徑 – billjamesdev
我收到以下錯誤W/System.err(345):java.io.IOException:運行exec()的錯誤。 bin/lsof | grep,init]工作目錄:null環境:null – chiv