Runtime objRuntime = Runtime.getRuntime();
String strBackupString = "mysqldump -u " + userName + " -p" + password + " " + dbName;
Process objProcess = objRuntime.exec(strBackupString);
这用于备份数据库。但究竟发生了什么?任何人都可以让我解释一下,Runtime
和Process
类的目的是什么?
这个类是否习惯于从命令提示符输入命令?那么如果我想打开记事本,我应该传递给objRuntime.exec()
?我们调用exec方法时是否执行命令?如果是,那么Process
在这里服务的目的是什么?我真的无法理解这两个类。请让我明白。在此先感谢:)
答案 0 :(得分:19)
如有疑问,请务必咨询API:
ProcessBuilder.start()
和Runtime.exec
方法创建本机进程并返回Process
子类的实例,该实例可用于控制进程并获取有关它的信息。类Process
提供了从进程执行输入,执行输出到进程,等待进程完成,检查进程的退出状态以及销毁(杀死)进程的方法。在单独的进程中执行指定的系统命令。
所以是的,Runtime.exec
可以执行您通常在系统命令提示符中键入的命令。这不是一个独立于平台的解决方案,但有时需要它。返回的Process
对象允许您控制它,将其删除,有时重要的是,重定向其标准输入/输出/错误流。
如前所述,这是依赖于平台的,但此代码段适用于我的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类,它代表一个线程。