2012-12-06 41 views
0

我有一些Ruby代码,它具有以下如何从守护程序进程中执行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。齿条应用在代码中的上述系统的呼叫,并且当从使用

rack config.ru 

然而终端,当我systemd启动它运行它工作得很好,如更一般如上所述,齿条的应用不有权访问正确的文件描述符。在我看来,它应该是某种程度上能够映射当前X显示和/或文件描述符从systemd

+1

哪个终端做你期望'vim'要附加当您从您的守护进程调用它? – derobert

+1

对于这个问题,你甚至期望vim在做这样的调用时做什么? – duskwuff

+0

Deamons通常使用/ dev/null与stdio一起运行。你究竟想要做什么? – Keith

回答

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. 
+0

我想在运行的X会话中启动gvim的一个实例。 – g33kz0r