我有一个长期运行的进程(用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 ...
我觉得很奇怪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)