0

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

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. 机架应用程序在代码中有上述系统调用,当我使用从终端运行它时工作正常

rack config.ru

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

4

1 回答 1

0

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.
于 2012-12-07T08:05:01.580 回答