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

これは、デーモン化されたプロセスがファイル記述子にアクセスできないためだと思います。

EDIT 何人かのコメンターは、私のユースケースのより具体的な詳細を求めました。ここに行きます:私はラックベースのルビーアプリを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 に答える