2011-05-17 53 views
2

程序(例如命令行实用程序)产生外部编辑器并读回文件更改的典型设计是什么?许多命令行实用程序都这样做。例如,svn commit启动了一个外部编辑器,以便在没有-c的情况下运行该注释。产生一个外部编辑器 - 这是如何工作的?

我已经考虑的一些选项有:

  • 投票临时文件文件,等待时间戳改变,但这仅限于单一的拯救。
  • 向操作系统注册以通知对临时文件的更改,但这将取决于平台,我希望避免这种情况。
  • 监视生成的进程,等待它终止,但我不确定这将如何工作的编辑器,如TextMate和TextWrangler,通常具有长寿过程。
  • 与stdin和stdout生成的进程交互,但我不清楚如何/如果这可以工作的细节。

希望解决方案与平台无关。为了记录我的平台是OS X上的JVM。

P.S.任何关于这个问题适当标签的建议?

回答

2

如果通过Java(Runtime.exec)启动进程,则会返回一个Process对象,该进程对象具有一个waitFor()方法,该方法会告诉您进程何时完成。

只要运行vi或nano或通过它,然后一旦退出,您可以读取文件。

+1

确保编辑器不会分叉到后台并立即返回。如果是这样,应该有一个命令行选项来阻止它。 – 2011-05-17 14:13:48

+1

检查包含用户首选编辑器的'EDITOR'环境变量是很好的风格。 – 2011-05-17 14:14:23