Java Process.waitFor()方法詳解
Java Process.waitFor()方法
Process.waitFor()方法 將導(dǎo)致當(dāng)前線程等待,直到該對象的進(jìn)程結(jié)束,才返回調(diào)用。
描述
java.lang.Process.waitFor()方法將導(dǎo)致當(dāng)前的線程等待,如果必要的話,直到由該Process對象表示的進(jìn)程已經(jīng)終止。此方法將立即返回,如果子進(jìn)程已經(jīng)終止。如果子進(jìn)程尚未終止,則調(diào)用線程將被阻塞,直到子進(jìn)程退出。
聲明
以下是java.lang.Process.waitFor()方法的聲明
public abstract int waitFor()
參數(shù)
NA
返回值
此方法返回的退出值的過程。按照慣例,0表示正常終止。
異常
NA
實例
下面的例子說明了如何使用lang.Process.waitFor()方法。
package com.yiibai;
public class ProcessDemo {
public static void main(String[] args) {
try {
// create a new process
System.out.println("Creating Process...");
Process p = Runtime.getRuntime().exec("notepad.exe");
// cause this process to stop until process p is terminated
p.waitFor();
// when you manually close notepad.exe program will continue here
System.out.println("Waiting over.");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
編譯運行結(jié)果:
Creating Process...
Waiting over.
process.waitFor()沒有作用
最近在遇到關(guān)于視頻需要轉(zhuǎn)碼 用到ffmpeg 使用cmd運行時,需要在cmd運行成功后進(jìn)行操作,百度都說使用waitfor()方法,但是總是一閃而過, 沒有起到等待完成的作用..
Process process = Runtime.getRuntime().exec("cmd /c start notepad.exe");
process.waitFor();
java的Runtime.getRuntime().exec(commandStr)可以調(diào)用執(zhí)行cmd指令。
cmd /c dir是執(zhí)行完dir命令后關(guān)閉命令窗口。cmd /k dir是執(zhí)行完dir命令后不關(guān)閉命令窗口。cmd /c start dir會打開一個新窗口后執(zhí)行dir指令,原窗口會關(guān)閉。cmd /k start dir會打開一個新窗口后執(zhí)行dir指令,原窗口不會關(guān)閉。
這個代碼中的process.waitFor();并沒有起到作用
后面的代碼在調(diào)用的notepad.exe還沒結(jié)束就繼續(xù)運行了,
結(jié)果發(fā)現(xiàn)是因為在exec里面用了start
這樣的后果是process.waitFor()等待的是一個一閃而過的用來打開exe的命令行窗口而已.
去掉start這個詞,就會等到exe結(jié)束程序在繼續(xù)執(zhí)行了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot集成swagger、knife4j及常用注解的使用
這篇文章主要介紹了springboot集成swagger、knife4j及常用注解的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
解決idea導(dǎo)入ssm項目啟動tomcat報錯404的問題
今天小編就為大家分享一篇解決idea導(dǎo)入ssm項目啟動tomcat報錯404的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Caused by: java.lang.ClassNotFoundException: org.objectweb.a
這篇文章主要介紹了Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
SpringBoot中自定義首頁(默認(rèn)頁)及favicon的方法
這篇文章主要介紹了SpringBoot中如何自定義首頁(默認(rèn)頁)及favicon,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
EasyExcel實現(xiàn)讀寫Excel文件的示例代碼
EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱。它可以在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel,所以本文就將利用它實現(xiàn)讀寫Excel文件,感興趣的可以了解一下2022-08-08
基于SpringBoot的Dubbo泛化調(diào)用的實現(xiàn)代碼
這篇文章主要介紹了基于SpringBoot的Dubbo泛化調(diào)用的實現(xiàn),從泛化調(diào)用實現(xiàn)的過程來看,我們可以對自己提供所有服務(wù)進(jìn)行測試,不需要引入調(diào)用的接口,減少代碼的侵入,需要的朋友可以參考下2022-04-04

