[英]How can I open another command line application in Linux from a Java program?
我正在嘗試編寫一個小的Java命令行應用程序,該應用程序將創建一個新文件,然后使用存儲在$ EDITOR中的系統默認編輯器將其打開,然后在關閉該編輯器后退出。
到目前為止,沒有運氣,我嘗試了以下操作:
Desktop dt = Desktop.getDesktop();
dt.edit(file);
此方法導致UnsupportedOperationException
,這在我從終端運行程序而不是從桌面運行Java應用程序時是有意義的。
現在,我有這個:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commandString); // "vim newfile"
proc.waitFor();
這是可行的,但不是我需要的。 當我跑步
ps a | grep vim
我可以看到它確實在后台運行,並帶有我給它的文件名:
1000 pts/1 S+ 0:00 vim 2014-07-16.23-02
關於如何使其在前台運行的任何想法?
像許多交互式程序一樣,vim希望其stdin
是可以向其發送ioctl
調用的真實終端。 但是,當通過Runtime.exec()
執行時,會將stdin
重定向到父進程( 有關更多信息,請參見Process
上的Javadoc )。
在Java 7中,您應該能夠使用ProcessBuilder.inheritIO()
傳遞文件句柄。 (免責聲明:YMMV,我還沒有嘗試過。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.