windows | Mac os | linux | 电脑故障 | 网络知识 | 电脑百科 | 破解软件 | 网页编程 | 电脑配置 |

android java如何执行linux命令

android java如何执行linux命令?android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,下面跟着小编来一起来了解下吧。

android java执行linux命令方法

通常有很多命令可以通过串口终端输入,得到结果,在程序中,通常我们需要得到某些命令的结果,在代码中执行命令,并将结果返回。

有两个类:CommandHelper.java和CommandResult.java 第一个类用于处理命令,第二个则用于返回一个结果

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);//创建一个字进程,并保存在process对象中

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() 表示 等这条语句执行完后再往下执行

//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;

}

}

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

简单的调用: 杀掉一个进程 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
  • android java如何执行linux命令 相关内容:
  • Linux怎么使用sort排序命令
  • sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入。如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出...

  • 排序命令sort使用实例介绍
  • sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。小编为大家分享了排序命令sort使用实...

  • linux系统命令及其使用详解
  • 如果你的英文足够好,那完全可以不靠任何人就精通linux,这里小编为大家分享下linux系统命令及其使用详解,希望大家喜欢。linux系统命令及其使用详解cat cdchmod chowncp cut名称:cat使用权限:所有使用者使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName说明:把档案串...

  • Linux服务器监控工具
  • 有许多非常好的服务器监控解决方案,而为了省去你寻找方案的麻烦,这里小编为你列出了我能找到的最好的服务器监控工具。Linux服务器监控工具1.找出瓶颈2.硬盘(存储)瓶颈3.CPU及内存瓶颈4.网络瓶颈#1: top - 进程活动top提供一个当前运行系统实时动态的视图,也就是正在运行进...

  • linux操作系统监控工具
  • 监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。这里小编就与大家谈谈Linux操作票撒谎那个面都有一些什么样的系统监控工具。linux操作系统监控...

  • linux系统监控工具
  • 通过系统监控可以了解系统的运行状态、及时发现异常、分析原因、提早解决,避免系统故障,确保用户对系统的感知度和满意度。IPTV系统一般是通过告警管理、日志管理、信令跟踪、探针、诊断测试来实现对系统的监控。小编为大家分享了linux系统监控工具,下面大家跟着小编一起来...

  • Linux系统管理命令大全
  • linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。小编为大家分享了Linux系统管理命令,下面大家跟着小编一起来了解一下吧。Linux...

  • 怎么把Linux系统的文件拷贝到U盘
  • copy意为复制、摹本。拷贝有四种解释:①是一个计算机系统的DOS命令,意为“复制”,是一个新名词,广泛地应用于IT的各个领域,那么怎么把Linux系统的文件拷贝到U盘呢?小编为大家分享了拷贝Linux系统的文件到U盘的解决方法,下面大家跟着小编一起来了解一下吧。拷贝Linux...

  • 查看更多>>

    linux