2014-06-16 52 views
2

我正在編寫一個控制檯應用程序,它將使用* NIX上的系統編輯器。爲此,我編寫了一個將字符串寫入文件的方法,啓動一個編輯器來更改該文件,然後再次讀取該文件。問題是運行編輯器的調用不會等待該應用程序關閉。我需要程序等待編輯完成。運行外部應用程序直到關閉

Runtime.getRuntime().exec(editorcmd + " " + tmpfn); 

編輯器需要訪問運行程序的控制檯。它似乎也沒那麼做。

+4

使用waitFor方法。 – tianwei

+0

要向@ tianwei的評論添加更多信息,exec會返回一個[Process](http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#waitFor%28%29)對象。對此調用waitFor方法 –

回答

1

Runtime.getRuntime().exec(new String[]{"sh", "-c", editorcmd + " " + tmpfn + " >/dev/tty </dev/tty"}).waitFor(); 

此替換將暫停當前的線程,直到過程完成後,用stdin和stdout管道輸送到控制終端。

+0

使用它會立即退出,我假定因爲編輯器無法訪問控制檯。 – cyrus

+0

好的,我正在用這裏的信息修復它:http://stackoverflow.com/questions/10340788/how-to-edit-file-on-console-from-java – McLovin

+0

僅供參考這裏有一個語法錯誤。 – cyrus