如何从守护进程内部执行 rgvim



我有一些红宝石代码,它有以下内容

system("rgvim " + MY_FILE)

这在终端上工作正常,但是如果我使用 systemd 将此代码作为机架应用程序运行,则系统调用将无法工作。 我收到消息:

Dec 06 14:40:54 mypc config.ru[10211]: Vim: Warning: Output is not to a terminal
Dec 06 14:40:54 mypc config.ru[10211]: Vim: Warning: Input is not from a terminal

我认为这是因为守护进程无法访问文件描述符。

编辑 一些评论者要求提供有关我的用例的更具体细节。 这里是:我正在尝试使用 systemd 启动一个基于机架的 ruby 应用程序。 机架应用程序在代码中有上述系统调用,当我使用

rack config.ru

但是,当我使用 systemd 启动它时,如上所述,机架应用程序无法访问正确的文件描述符。 在我看来,应该可以以某种方式从systemd映射当前的 X 显示和/或文件描述符

Vim是一个交互式文本编辑器,它不应该在没有附加终端的情况下使用;这就是警告的来源。

你可以尝试在批处理模式下运行 Vim;cp。 :help -s-ex,像这样:

vim -T dumb -n -es -S "commands.ex" "filespec"

以下是所用参数的摘要:

 -T dumb            Avoids errors in case the terminal detection goes wrong.
 -n                 No swapfile.
 -es                Ex mode + silent batch mode  -s-ex
                    Attention: Must be given in that order!
 -S  ...            Source script.
 filespec           The file to operate on.

相关内容

  • 没有找到相关文章

最新更新