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