2012-12-06 67 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