在java程序中如何调用linux的命令?如何调用shell脚本呢?

本文详细介绍了如何使用Java中的Runtime类来执行Linux命令,包括使用exec()方法执行命令,处理命令输出,并在命令执行完成后检查其退出状态。通过实例展示了如何在Java程序中与Linux环境交互。

process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。


process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。



至于详细的process类的介绍放在以后介绍。


另外还要注意一个类:Runtime类,Runtime类是一个与JVM运行时环境有关的类,这个类是Singleton的。


这里用到的Runtime.getRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的方法。(另外,Runtime的大部分方法都是实例方法,也就是说每次运行调用的时候都需要调用到getRuntime方法)


下面说说Runtime的exec()方法,这里要注意的有一点,就是public Process exec(String [] cmdArray,
String []
envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp感觉应该
和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。

public boolean
runRootCommand(String command) {
        Process process = null;
       
DataOutputStream os = null;
        try {
            process =
Runtime.getRuntime().exec("su");
            os = new
DataOutputStream(process.getOutputStream());
           
os.writeBytes(command+"\n");
           
os.writeBytes("exit\n");
            os.flush();
           
process.waitFor();
        } catch (Exception e) {
               //
Log.d(TAG, "the device is not rooted, error message: " +
e.getMessage());
                DisplayToast("the device is not rooted,
error message: " + e.getMessage());
                return false;
       
} finally {
            try {
                if (os != null)
{
                    os.close();
                }
               
if(process != null) {
                   
process.destroy();
                }
            } catch (Exception e)
{
                e.printStackTrace();
            }
       
}
        return true;
    }

转载于:https://www.cnblogs.com/nicholaswei/archive/2012/10/12/2721237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值