2

私のワークフローは、ESS パッケージを介して emacs バッファーから emacs の R セッションにコマンドを送信することです。

a=0;
system("ssh remotehost ls")
a = a+1;

上記の 3 行を立て続けに実行すると (つまり、R バッファーに送信すると)、末尾の a の値は 0 になります。ゆっくり実行すると、a は 1 になります。

この問題は、システム経由で ssh コマンドを実行した場合にのみ発生しました。それ以外の場合はすべて、コマンドがキューに入れられ、すべて順番に実行されます。

私の同僚も、R/vim のセットアップでまったく同じ問題を抱えています。しかし、RStudio では同じ問題はありません。

ここでの提案は素晴らしいでしょう。

4

1 に答える 1

2

sshstdinコマンド中にすべてを食べsystem()ます。行ごとに貼り付けると、ssh送信する前に終了するため、代わりに にa=a+1渡されます。サブプロセスが端末入力を食べたくない場合はorを使用します。Rsshsystem("ssh .. < /dev/null")system(..., input="")

于 2015-03-03T21:25:54.380 に答える