後來發現裏面有包ping這指令,而且有設置setgid權限,那麼應該是可以執行。只是試了之後,卻不行,然後我就以為不行。之後不死心,把stderr接出來看,才知道我下錯指令,於是修正以後,就可以了。
final class Helper { private final String TAG="Helper"; private void pingInExec(String host) { Runtime runtime = Runtime.getRuntime(); String command = String.format("/system/bin/ping -c 2 %s", host); Process proc; try { proc = runtime.exec( command ); BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); BufferedReader err = new BufferedReader(new InputStreamReader(proc.getErrorStream())); String inputLine; while ((inputLine = in.readLine()) != null) { Log.d(TAG, inputLine ); } in.close(); while ((inputLine = err.readLine()) != null) { Log.e(TAG, inputLine ); } err.close(); proc.waitFor(); int exit = proc.exitValue(); Log.d(TAG, String.format("exitcode=%d", exit) ); if (exit == 0) { // normal exit Log.d(TAG, "RESPONSE_OK"); } else { // abnormal exit, so decide that the server is not reachable Log.d(TAG, "RESPONSE_TIMEOUT" ); } } catch (IOException e) { Log.e( TAG, e.getMessage() ); } catch (InterruptedException e) { Log.e( TAG, e.getMessage() ); } } }
沒有留言:
張貼留言