簡體   English   中英

在調用r.exec啟動cmd提示符后,如何停止執行我的java程序

[英]How to stop the execution of my java program after i invoke r.exec to start a cmd prompt

在我的程序中我使用r.exec(); 啟動命令提示符並在其中執行bat文件。

但是,只要執行上述語句,cmd提示就會啟動並執行其中的bat文件。但是,java程序執行不會等到bat文件在提示符中執行,即。 它啟動cmd提示並開始在其中執行bat文件,並繼續執行r.exec()之后的下一個語句; 。(同時我的bat文件仍在提示中執行)

我的要求是,java程序必須等到執行命令提示符中的bat文件,而不是繼續執行next語句。

Runtime.exec返回一個Process實例。 在該實例上,您可以調用waitFor()以等待Process完成。

此外,您需要處理Process.getErrorStream()Process.getOutputStream() (通常在單獨的Thread中),以便Process在這些Buffers填滿時不會阻塞。 帶有redirectErrorStream(true) ProcessBuilder有一個方便的方法,它不需要同時處理兩個流,也不需要額外的線程。

r.exec("command")返回Process 從這里你可以簡單地說出以下內容:

Process process = r.exec("command here");
process.waitFor(); //Waits until process closes

waitFor()方法將暫停當前線程,直到進程關閉。

Javadoc waitFor() :如果需要,使當前線程等待,直到此Process對象表示的進程終止

此外,如果要捕獲輸入或向控制台發送命令,可以在單獨的線程中使用process.getInputStream()process.getOutputStream() 這將允許您在批處理文件運行時監視它,因此如果由於某種原因發生故障,您可以取消終止進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM