Java Process.waitFor()方法詳解
Java Process.waitFor()方法
Process.waitFor()方法 將導致當前線程等待,直到該對象的進程結(jié)束,才返回調(diào)用。
描述
java.lang.Process.waitFor()方法將導致當前的線程等待,如果必要的話,直到由該Process對象表示的進程已經(jīng)終止。此方法將立即返回,如果子進程已經(jīng)終止。如果子進程尚未終止,則調(diào)用線程將被阻塞,直到子進程退出。
聲明
以下是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()沒有作用
最近在遇到關于視頻需要轉(zhuǎn)碼 用到ffmpeg 使用cmd運行時,需要在cmd運行成功后進行操作,百度都說使用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命令后關閉命令窗口。cmd /k dir
是執(zhí)行完dir命令后不關閉命令窗口。cmd /c start dir
會打開一個新窗口后執(zhí)行dir指令,原窗口會關閉。cmd /k start dir
會打開一個新窗口后執(zhí)行dir指令,原窗口不會關閉。
這個代碼中的process.waitFor();并沒有起到作用
后面的代碼在調(diào)用的notepad.exe還沒結(jié)束就繼續(xù)運行了,
結(jié)果發(fā)現(xiàn)是因為在exec里面用了start
這樣的后果是process.waitFor()等待的是一個一閃而過的用來打開exe的命令行窗口而已.
去掉start這個詞,就會等到exe結(jié)束程序在繼續(xù)執(zhí)行了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring?Boot實現(xiàn)消息的發(fā)送和接收使用實戰(zhàn)指南
這篇文章主要為大家介紹了Spring?Boot實現(xiàn)消息的發(fā)送和接收使用實戰(zhàn)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06SpringBoot 統(tǒng)一請求返回的實現(xiàn)
這篇文章主要介紹了SpringBoot 統(tǒng)一請求返回的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07Mybatis-Plus實現(xiàn)自動生成代碼的操作步驟
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發(fā)效率,本文將給大家介紹Mybatis-Plus實現(xiàn)自動生成代碼的操作步驟2023-10-10Springboot actuator應用后臺監(jiān)控實現(xiàn)
這篇文章主要介紹了Springboot actuator應用后臺監(jiān)控實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04