Java中Process类的目的是什么?

时间:2010-05-09 17:02:39

标签: java runtime.exec

Runtime objRuntime = Runtime.getRuntime();
String strBackupString = "mysqldump -u " + userName + " -p" + password + " " + dbName;
Process objProcess = objRuntime.exec(strBackupString);

这用于备份数据库。但究竟发生了什么?任何人都可以让我解释一下,RuntimeProcess类的目的是什么?

这个类是否习惯于从命令提示符输入命令?那么如果我想打开记事本,我应该传递给objRuntime.exec()?我们调用exec方法时是否执行命令?如果是,那么Process在这里服务的目的是什么?我真的无法理解这两个类。请让我明白。在此先感谢:)

2 个答案:

答案 0 :(得分:19)

如有疑问,请务必咨询API:

  

java.lang.Process

     

ProcessBuilder.start()Runtime.exec方法创建本机进程并返回Process子类的实例,该实例可用于控制进程并获取有关它的信息。类Process提供了从进程执行输入,执行输出到进程,等待进程完成,检查进程的退出状态以及销毁(杀死)进程的方法。

     

Runtime.exec(String command)

     

在单独的进程中执行指定的系统命令。

所以是的,Runtime.exec可以执行您通常在系统命令提示符中键入的命令。这不是一个独立于平台的解决方案,但有时需要它。返回的Process对象允许您控制它,将其删除,有时重要的是,重定向其标准输入/输出/错误流。

相关问题

API链接


notepad.exe示例

如前所述,这是依赖于平台的,但此代码段适用于我的Windows机器;它启动notepad.exe,并尝试从当前工作目录中打开test.txt。然后程序等待进程终止,并打印其exit code

public class ExecExample {
    public static void main(String[] args) throws Exception {
        Process p = Runtime.getRuntime().exec("notepad.exe test.txt");      
        System.out.println("Waiting for notepad to exit...");
        System.out.println("Exited with code " + p.waitFor());
    }
}

答案 1 :(得分:1)

这是一个基于对象的过程表示。类似于Thread类,它代表一个线程。