我正在編寫一個控制檯應用程序,它將使用* NIX上的系統編輯器。爲此,我編寫了一個將字符串寫入文件的方法,啓動一個編輯器來更改該文件,然後再次讀取該文件。問題是運行編輯器的調用不會等待該應用程序關閉。我需要程序等待編輯完成。運行外部應用程序直到關閉
Runtime.getRuntime().exec(editorcmd + " " + tmpfn);
編輯器需要訪問運行程序的控制檯。它似乎也沒那麼做。
我正在編寫一個控制檯應用程序,它將使用* NIX上的系統編輯器。爲此,我編寫了一個將字符串寫入文件的方法,啓動一個編輯器來更改該文件,然後再次讀取該文件。問題是運行編輯器的調用不會等待該應用程序關閉。我需要程序等待編輯完成。運行外部應用程序直到關閉
Runtime.getRuntime().exec(editorcmd + " " + tmpfn);
編輯器需要訪問運行程序的控制檯。它似乎也沒那麼做。
與
Runtime.getRuntime().exec(new String[]{"sh", "-c", editorcmd + " " + tmpfn + " >/dev/tty </dev/tty"}).waitFor();
此替換將暫停當前的線程,直到過程完成後,用stdin和stdout管道輸送到控制終端。
使用waitFor方法。 – tianwei
要向@ tianwei的評論添加更多信息,exec會返回一個[Process](http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#waitFor%28%29)對象。對此調用waitFor方法 –