R:在system()中使用wait = FALSE和多行命令

Tho*_*P85 3 r

我有一个长期运行的进程(用Java编写),我希望与系统异步运行(...,wait = FALSE).为了能够确定进程何时结束,我想根据在如何确定何时以系统启动进程(...,wait = FALSE)中给出的建议结束后创建文件.问题是,似乎wait参数仅适用于多行系统命令中的最后一行,而我似乎无法找到解决方法.

例:

system('sleep 2')                 # waits 2 seconds before control is returned to the user
system('sleep 2', wait=FALSE)     # control is returned immediately
system('sleep 2; ls', wait=FALSE) # waits 2 seconds before control is returned to the user
Run Code Online (Sandbox Code Playgroud)

我正在运行mac系统btw ...

Áng*_*gel 5

我觉得很奇怪R的系统只等待第一个命令(它应该调用shell,然后等待两个命令)但是使用&&应该这样做:

system('sleep 2 && ls', wait=FALSE)
Run Code Online (Sandbox Code Playgroud)

如果R将&附加到命令行,则它变为,sleep 2; ls &并且&仅影响第二个参数.

另一个解决方案是在命令周围加上括号,( sleep 2 ; ls ) & 将按顺序执行两个操作:

system('( sleep 2 ; ls )', wait=FALSE)
Run Code Online (Sandbox Code Playgroud)