如何使用Java 调用系统命令或程序的方法

Java
286
0
0
2022-11-10

参考:nowjava.com/article/15524

作用:需要调用系统外部的某个程序,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序。

使用方式:

需要指定参数一:命令位置;参数二:-c表示先执行第一个参数;参数三:你的命令。 Runtime.getRuntime().exec(new String[]{“/bin/sh”,”c”,”xxx”});

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)—-在指定环境和工作目录的独立进程中执行指定的命令和变量

细节

此方法返回一个java.lang.Process对象,该对象可以得到之前开启的进程的运行结果,还可以操作进程的输入输出流。

Process对象有以下几个方法:

1、destroy() 杀死这个子进程

2、exitValue() 得到进程运行结束后的返回状态

3、waitFor() 得到进程运行结束后的返回状态,如果进程未运行完毕则等待直到执行完毕

4、getInputStream() 得到进程的标准输出信息流

5、getErrorStream() 得到进程的错误输出信息流

6、getOutputStream() 得到进程的输入流

测试模板

import java.io.IOException;
public class HelloWorld {
    public static void main(String[] args) {
        //System.out.println("Hello World"); 
        try
{
    Process process = Runtime.getRuntime().exec("hostname");
    System.out.println(process.waitFor());
}catch(IOException | InterruptedException ex){
    ex.printStackTrace();    
}
    }
}
[root@SICAP191 oma]# javac HelloWorld.java 
[root@SICAP191 oma]# java HelloWorld
0