2

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

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

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

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

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

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

4

1 回答 1

2

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

于 2015-03-03T21:25:54.380 回答