【发布时间】:2019-05-23 11:34:22
【问题描述】:
我正在用 C(linux 环境)开发一个命令行应用程序来编辑特定的文件格式。此文件格式是一个纯 XML 文件,经过压缩、加密和加密签名。
我想为用户提供一个选项,让他们以一种简单的方式编辑此类文件,而无需手动提取文件、编辑文件、然后压缩、加密和签名。
理想情况下,当调用时,我的应用程序应该执行以下操作:
- 打开加密/压缩文件并将其解压缩到一个临时位置(如
/tmp) - 调用外部文本编辑器,如
nano或sublime-text或gedit,具体取决于安装的内容以及用户偏好。等到用户编辑完文件并关闭文本编辑器。 - 读取修改后的临时文件并加密/压缩,替换旧的加密/压缩文件
我怎样才能达到第 1 点。 2?
我想过用system() 调用nano 并等待它返回,或者在临时文件上放置inotify() 以了解图形文本编辑器何时对其进行了修改。
哪种解决方案更好? 如何调用用户的默认文本编辑器? 有什么可以做得更好的方法吗?
【问题讨论】:
-
你的意思是像
gpg -d file -o- | xmlstarlet edit --update 'something' -value 'something' | gpg -ooutput_file?使用$EDITOR环境变量来查找编辑器。看看systemctl edit ...是如何工作的。
标签: c linux command-line text-editor