r - 在 R shell 中使用 system 调用 ssh 会吃掉后续命令

标签 r vim emacs ess vim-r

我的工作流程是通过 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/

相关文章:

visual-studio - Visual Studio 中的 emacs 风格键盘宏

r - dplyr transmute 返回比原始数据帧更少的行

css - 增加 Shiny 应用程序中操作按钮的长度

r - 在没有公共(public)变量的情况下执行 dplyr full_join 以混合数据帧

vim - 如何在多个客户端之间共享一个vimrc文件?

vim - 如何在 VIM 中向 snipMate 添加新片段

emacs - 我编写的 Emacs 函数上的 "wrong-type-argument"

r - R 中的列表和配对列表有什么区别?

python - 在 Vimscript 中,是否可以访问语法荧光笔已知的信息?

emacs - 以交互方式更改 Emacs 中的框架宽度