在java中呼叫作業系統的程式時,可以使用java.lang.Runtime.getRuntime().exec() 來實現,但是這個方法在呼叫命令後就直接返回當前執行緒了;程式設計時,有時候需要在等待呼叫的系統程式完成操作後,當前執行緒才能做下一步操作,此時可以用類Process的方法waitFor()來實現,它會阻塞當先執行緒直至呼叫程式執行結束java.lang.Process process = java.lang.Runtime.getRuntime().exec("");//執行命令生成cube try {
process.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
proc_stat = checkFileSize() ? "1" : "3";
java.lang.Process process = java.lang.Runtime.getRuntime().exec("");//執行命令生成cube
try {
Process的方法waitFor()介紹,取自API文件:
waitFor
public abstract int waitFor()
throws InterruptedException導致當前執行緒等待,如果必要,一直要等到由該 Process 物件表示的程序已經終止。如果已終止該子程序,此方法立即返回。如果沒有終止該子程序,呼叫的執行緒將被阻塞,直到退出子程序。
返回:
程序的出口值。根據慣例,0 表示正常終止。
丟擲:
InterruptedException - 如果當前執行緒在等待時被另一執行緒 中斷,則停止等待,丟擲 InterruptedException。
自我實踐:
執行多條cmd命令
String cmd = "cmd /c G: && cd G:\\projects\\testProject && start mvn package";
Process process = Runtime.getRuntime().exec(cmd);
process.exitValue() ;
這樣可以執行多條命令。
值得注意的是:執行 start mvn package,會開啟視窗,呼叫process.waitFor(),主執行緒不會被阻塞,而是會返回執行成功process.exitValue() == 0
將start mvn package中start去掉後,主執行緒就會阻塞,直到cmd命令開啟的子程序執行完畢,然後執行主執行緒。
在java中呼叫作業系統的程式時,可以使用java.lang.Runtime.getRuntime().exec() 來實現,但是這個方法在呼叫命令後就直接返回當前執行緒了;程式設計時,有時候需要在等待呼叫的系統程式完成操作後,當前執行緒才能做下一步操作,此時可以用類Process的方法waitFor()來實現,它會阻塞當先執行緒直至呼叫程式執行結束java.lang.Process process = java.lang.Runtime.getRuntime().exec("");//執行命令生成cube try {
process.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
proc_stat = checkFileSize() ? "1" : "3";
[java] view plain copyjava.lang.Process process = java.lang.Runtime.getRuntime().exec("");//執行命令生成cube
try {
process.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
proc_stat = checkFileSize() ? "1" : "3";
Process的方法waitFor()介紹,取自API文件:
waitFor
public abstract int waitFor()
throws InterruptedException導致當前執行緒等待,如果必要,一直要等到由該 Process 物件表示的程序已經終止。如果已終止該子程序,此方法立即返回。如果沒有終止該子程序,呼叫的執行緒將被阻塞,直到退出子程序。
返回:
程序的出口值。根據慣例,0 表示正常終止。
丟擲:
InterruptedException - 如果當前執行緒在等待時被另一執行緒 中斷,則停止等待,丟擲 InterruptedException。
自我實踐:
執行多條cmd命令
String cmd = "cmd /c G: && cd G:\\projects\\testProject && start mvn package";
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
process.exitValue() ;
這樣可以執行多條命令。
值得注意的是:執行 start mvn package,會開啟視窗,呼叫process.waitFor(),主執行緒不會被阻塞,而是會返回執行成功process.exitValue() == 0
將start mvn package中start去掉後,主執行緒就會阻塞,直到cmd命令開啟的子程序執行完畢,然後執行主執行緒。