2016-05-31 38 views
2

具体到Mac - 简单重复的例子:R Sys.sleep()中断在Mac /如何使中断延迟?

Sys.sleep(60) 
print("output") 

为Sys.sleep()帮助页面说它应检查有无中断,但它似乎并没有尊重其任何形式的,不CTRL- c,不是Esc,不是停止按钮。您可以使用从终端运行脚本的ctrl-c中断,但会杀死整个脚本。

我想有一个设置的延迟间隔,我仍然可以中断,此时脚本将继续(因此,即使60秒还没有过去,“输出”仍然会打印)。有没有(希望不是太重资源)的方式来做到这一点?

更普遍的是,当你不在终端时,是否有任何方法可以在Mac上中断一个Sys.sleep呼叫,无论之后会发生什么?

相关资源似乎仍然没有解决这个:

How do I interrupt R?

https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#How-can-I-interrupt-lengthy-operations-or-output_003f < - 显然可以注入来自终端的中断?但这是笨重的,当然不会达到主要目标。

+0

尝试按住ESC键。这只适用于我(尽管我目前在Windows机器上)。帮助文件指出'Sys.sleep'“通常足以响应GUI事件,通常每半秒就会唤醒该进程。”所以只要快速按下键可能无法正常工作。 – lmo

+0

在Mac上按Esc对我来说工作得很好,但是我不清楚你希望通过调用'Sys.sleep'来完成,然后中断它。你的意思是做更像这样的事情:http://stackoverflow.com/q/15272916/324364 – joran

+0

在Mac OS 10.6.8与R 3.2.1 Esc无法正常工作。 – nya

回答

0

这里有一个可能性,我发现,使用该系统的睡眠,而不是将R版本:

system("sleep 60") 
print("output") 

这允许在Mac上使用Esc键退出系统休眠(而R控制台保持聚焦) ,所以提供了一个可行的解决方案。

不完全优雅,但完全可用。

(检举我自己的职位,但如果有人来更好的解决方案一起,他们可以检查。)