国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

android java如何執(zhí)行l(wèi)inux命令

2020-10-14 22:35:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

android java如何執(zhí)行l(wèi)inux命令?android的程序基于java開(kāi)發(fā),當(dāng)我們接上調(diào)試器,執(zhí)行adb shell,就可以執(zhí)行l(wèi)inux命令,下面跟著小編來(lái)一起來(lái)了解下吧。

android java執(zhí)行l(wèi)inux命令方法

通常有很多命令可以通過(guò)串口終端輸入,得到結(jié)果,在程序中,通常我們需要得到某些命令的結(jié)果,在代碼中執(zhí)行命令,并將結(jié)果返回。

有兩個(gè)類:CommandHelper.java和CommandResult.java 第一個(gè)類用于處理命令,第二個(gè)則用于返回一個(gè)結(jié)果

package com.example.task_aidl;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class CommandHelper {

//default time out, in millseconds

public static int DEFAULT_TIMEOUT;

public static final int DEFAULT_INTERVAL = 1000;

public static long START;

public static CommandResult exec(String command) throws IOException, InterruptedException {

Process process = Runtime.getRuntime().exec(command);//創(chuàng)建一個(gè)字進(jìn)程,并保存在process對(duì)象中

CommandResult commandResult = wait(process);

if (process != null) {

process.destroy();

}

return commandResult;

}

private static boolean isOverTime() {

return System.currentTimeMillis() - START >= DEFAULT_TIMEOUT;

}

private static CommandResult wait(Process process) throws InterruptedException, IOException {

BufferedReader errorStreamReader = null;

BufferedReader inputStreamReader = null;

try {

errorStreamReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

inputStreamReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

//timeout control

START = System.currentTimeMillis();

boolean isFinished = false;

for (;;) {

if (isOverTime()) {

CommandResult result = new CommandResult();

result.setExitValue(CommandResult.EXIT_VALUE_TIMEOUT);

result.setOutput("Command process timeout");

return result;

}

if (isFinished) {

CommandResult result = new CommandResult();

result.setExitValue(process.waitFor()); //process.waitFor() 表示 等這條語(yǔ)句執(zhí)行完后再往下執(zhí)行

//parse error info

if (errorStreamReader.ready()) {

StringBuilder buffer = new StringBuilder();

String line;

while ((line = errorStreamReader.readLine()) != null) {

buffer.APPend(line);

}

result.setError(buffer.toString());

}

//parse info

if (inputStreamReader.ready()) {

StringBuilder buffer = new StringBuilder();

String line;

while ((line = inputStreamReader.readLine()) != null) {

buffer.append(line);

}

result.setOutput(buffer.toString());

}

return result;

}

try {

isFinished = true;

process.exitValue();

} catch (IllegalThreadStateException e) {

// process hasn't finished yet

isFinished = false;

Thread.sleep(DEFAULT_INTERVAL);

}

}

} finally {

if (errorStreamReader != null) {

try {

errorStreamReader.close();

} catch (IOException e) {

}

}

if (inputStreamReader != null) {

try {

inputStreamReader.close();

} catch (IOException e) {

}

}

}

}

}

------------------------------------------------------------------------------

package com.example.task_aidl;

public class CommandResult {

public static final int EXIT_VALUE_TIMEOUT=-1;

private String output;

void setOutput(String error) {

output=error;

}

String getOutput(){

return output;

}

int exitValue;

void setExitValue(int value) {

exitValue=value;

}

int getExitValue(){

return exitValue;

}

private String error;

public String getError() {

return error;

}

public void setError(String error) {

this.error = error;

}

}

------------------------------------------------------------

簡(jiǎn)單的調(diào)用: 殺掉一個(gè)進(jìn)程 kill -9 PID

@Override

public String killProc(String PID) throws RemoteException {

// TODO Auto-generated method stub

String cmd = "kill -9 "+PID;

String reply = "";

Log.v("cmd",cmd);

try {

CommandHelper.DEFAULT_TIMEOUT = 5000;

CommandResult result = CommandHelper.exec(cmd);

if (result != null) {

if(result.getError()!=null)

{

Log.v("Output","Error:" + result.getError());

reply = result.getError();

}

if(result.getOutput()!=null)

{

Log.v("Output","Output:" + result.getOutput());

reply = result.getOutput();

}

}

} catch (IOException ex) {

Log.v("Output","IOException:" + ex.getLocalizedMessage());

} catch (InterruptedException ex) {

Log.v("Output","InterruptedException:" + ex.getLocalizedMessage());

}

return reply;

}

123
(責(zé)任編輯:VEVB)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 福建省| 南漳县| 普宁市| 黑河市| 昭苏县| 睢宁县| 乾安县| 娄底市| 永川市| 高陵县| 荆门市| 胶南市| 信丰县| 桃园县| 莎车县| 弥渡县| 延津县| 霍林郭勒市| 彭阳县| 宜宾市| 虎林市| 资兴市| 柘荣县| 花莲市| 连城县| 临沭县| 德昌县| 定西市| 清水县| 乌鲁木齐市| 平乐县| 宜宾县| 河南省| 阿图什市| 深州市| 开原市| 镇巴县| 关岭| 大安市| 承德县| 辽中县|