我遇到以下情况:在我的R脚本中,我使用system2
启动第三方程序。该程序被多次调用,不幸的是它不是很稳定并且有时会崩溃。如果发生这种情况,控制权不会返回到R,直到我通过任务管理器手动终止程序。
我想做什么:如果程序在10分钟后没有恢复控制,则自动将其杀死。
我当然可以用C ++,Java或类似程序包装程序,在包装器中实现这个功能,然后从R调用包装器。很可能我也可以使用Rcpp
。
但是,我想知道是否有办法直接在R中实现这个目标?
顺便说一下:我在Windows 7上。
感谢任何提示!
答案 0 :(得分:1)
如果您使用的是类似unix的系统,则可以将unix命令timeout
添加到系统调用中。例如:
# system command that times out
> exitcode = system('timeout 1 sleep 20')
> exitcode
[1] 124
# system command that does not time out
> exitcode = system('timeout 2 sleep 1')
> exitcode
[1] 0
system
返回进程的退出状态,以便您可以检查它是0(OK)还是124(超时)。