Java 命令执行笔记

本文介绍了Java中Runtime类的使用,探讨了Runtime实例的获取方式,包括通过getRuntime静态方法和反射调用构造器。详细解析了exec方法的调用链,以及如何处理命令执行结果。此外,还讨论了在复杂命令执行场景下,如何利用ProcessBuilder来替代exec,并分析了不同操作系统下的命令执行差异。
摘要由CSDN通过智能技术生成

依旧是跟着 feng 师傅的博客进行学习,过一遍feng师傅的笔记,再写到自己的博客上

Runtime

Runtime 类 ,就是运行时环境

public class Runtime {
    private static final Runtime currentRuntime  = new Runtime();

    private static Version version;

    public static Runtime getRuntime(){
        return currentRuntime;
    }
    private Runtime(){}
}

这种涉及模式叫做单例模式:

单例模式(Singleton)的目的是为了保证在一个进程中,某个类有且仅有一个实例。

因为这个类只有一个实例,因此,自然不能让调用方使用new Xyz()来创建实例了。所以,单例的构造方法必须是private,这样就防止了调用方自己创建实例,但是在类的内部,是可以用一个静态字段来引用唯一创建的实例的。

那么问题来了,外部调用方如何获得这个唯一实例?

答案是提供一个静态方法,直接返回实例:

或者直接把static变量暴露给外部:

java 进程种 有一个 Runtime 类对象,这个对象通过 getRuntime 方法 获得

    private static final Runtime currentRuntime = new Runtime();
    public static Runtime getRuntime() {
        return currentRuntime;
    }

exec方法的调用链

命令执行时 就是使用的exec方法,该方法有如下几种重载

public Process exec(String command)-----在单独的进程中执行指定的字符串命令。
public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量
public Process exec(String command, String [] envp)----在指定环境的独立进程中执行指定命令和变量
public Process exec(String [] cmdArray, String [] envp)----在指定环境的独立进程中执行指定的命令和变量
public Process exec(String command,String[] envp,File dir)----在有指定环境和工作目录的独立进程中执行指定的字符串命令
public Process exec(String[] cmdarray,String[] envp,File dir)----在指定环境和工作目录的独立进程中执行指定的命令和变量

ctrl + B 进入  exec  跟进源码

public Process exec(String command) throws IOException {
        return exec(command, null, null);
    }

继续 跟进exec

public Process exec(String command, String[] envp, File dir)
        throws IOException {
        if (command.isEm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值