我正在编写一个控制台应用程序,它将使用* NIX上的系统编辑器。为此,我编写了一个将字符串写入文件的方法,启动编辑器来更改该文件,然后再次读取该文件。问题是运行编辑器的调用不等待该应用程序关闭。我需要程序等待编辑器完成。
Runtime.getRuntime().exec(editorcmd + " " + tmpfn);
编辑器需要访问正在其中运行程序的控制台。它似乎也没那样做。
答案 0 :(得分:1)
将其替换为
Runtime.getRuntime().exec(new String[]{"sh", "-c", editorcmd + " " + tmpfn + " >/dev/tty </dev/tty"}).waitFor();
这将暂停当前线程,直到进程完成,stdin和stdout通过管道连接到控制终端。