我的工作流程是通过 ESS 包将命令从 emacs 缓冲区发送到 emacs 中的 R session 。
a=0;
system("ssh remotehost ls")
a = a+1;
当我快速连续运行上面三行(即将它们提交到 R 缓冲区)时,最后的 a 值为 0。当我缓慢运行它们时,a 为 1。
我仅在通过系统运行 ssh 命令时遇到此问题。在所有其他情况下,命令都会排队并按顺序运行。
我的同事的 R/vim 设置也有同样的问题。但我们在 RStudio 中没有遇到同样的问题。
这里的任何建议都会很棒。
最佳答案
ssh
吃掉任何stdin
期间system()
命令。如果您逐行粘贴,则 ssh
在您提交 a=a+1
之前终止因此它被传递到 R
而不是ssh
。使用system("ssh .. < /dev/null")
或system(..., input="")
如果您不希望子进程吃掉终端输入。
关于r - 在 R shell 中使用 system 调用 ssh 会吃掉后续命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838273/