gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:13:45 25 4
gpt4 key购买 nike

我有一个长时间运行的进程(用 Java 编写),我希望与 system(..., wait=FALSE) 异步运行。为了能够确定进程何时结束,我想根据 How to determine when a process started with system(..., wait=FALSE) has ended 中给出的建议创建一个文件。 .问题是,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

顺便说一句,我正在Mac系统上运行...

最佳答案

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

system('sleep 2 && ls', wait=FALSE)

如果 R 将 & 附加到命令行,它会变成 sleep 2; ls &并且 & 只影响第二个参数。

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

关于R:在具有多行命令的 system() 中使用 wait=FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com