在R shell中使用系统调用ssh会使用后续命令

时间:2015-03-03 17:37:58

标签: r vim emacs ess vim-r

我的工作流程是通过ESS包将emacs缓冲区中的命令发送到emacs中的R会话。

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

当我快速连续运行上面的三行(即将它们提交到R缓冲区)时,a的值为0.当我慢慢运行它们时,a为1.

我只有这个问题通过系统运行ssh命令。在所有其他情况下,命令排队并且所有命令都按顺序运行。

我的同事们对他们的R / vim设置有完全相同的问题。但是我们在RStudio中没有相同的问题。

这里的任何建议都会很棒。

1 个答案:

答案 0 :(得分:2)

ssh命令期间,

stdin会占用任何system()。如果您逐行粘贴,则ssh会在您提交a=a+1之前终止,因此会传递给R而不是ssh。如果您不希望子进程吃掉终端输入,请使用system("ssh .. < /dev/null")system(..., input="")