我有一些红宝石代码,它有以下内容
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.