在 R shell 中用系统调用 ssh 会吃掉后续命令
Calling ssh with system in R shell eats subsequent commands
我的工作流程是通过 ESS 包将命令从 emacs 缓冲区发送到 emacs 中的 R 会话。
a=0;
system("ssh remotehost ls")
a = a+1;
当我运行上面的三行快速连续的时候(即提交到R缓冲区),最后的a的值为0。当我慢慢运行他们的时候,a是 1.
我只遇到过这个问题 运行通过系统使用 ssh 命令。在所有其他情况下,命令排队并且所有 运行 按顺序排列。
我的同事在他们的 R/vim 设置中遇到了完全相同的问题。但是我们在 RStudio 中没有同样的问题。
这里有任何建议都很好。
ssh
在 system()
命令期间吃掉任何 stdin
。如果你逐行粘贴,那么 ssh
在你提交 a=a+1
之前终止,因此它被传递给 R
而不是 ssh
。如果您不希望子进程吃掉终端输入,请使用 system("ssh .. < /dev/null")
或 system(..., input="")
。
我的工作流程是通过 ESS 包将命令从 emacs 缓冲区发送到 emacs 中的 R 会话。
a=0;
system("ssh remotehost ls")
a = a+1;
当我运行上面的三行快速连续的时候(即提交到R缓冲区),最后的a的值为0。当我慢慢运行他们的时候,a是 1.
我只遇到过这个问题 运行通过系统使用 ssh 命令。在所有其他情况下,命令排队并且所有 运行 按顺序排列。
我的同事在他们的 R/vim 设置中遇到了完全相同的问题。但是我们在 RStudio 中没有同样的问题。
这里有任何建议都很好。
ssh
在 system()
命令期间吃掉任何 stdin
。如果你逐行粘贴,那么 ssh
在你提交 a=a+1
之前终止,因此它被传递给 R
而不是 ssh
。如果您不希望子进程吃掉终端输入,请使用 system("ssh .. < /dev/null")
或 system(..., input="")
。