R控制台和`didBecomeActive`消息

时间:2014-03-14 01:24:12

标签: r emacs osx-mavericks ess rgui

TL; DR :在RGUI和ESS中,didBecomeActive消息是什么以及如何抑制它们?


使用OSX 10.9.2中的OSX RGUI 3.0.3,控制台显示记录消息的外观 每当RGUI应用程序变为活动状态时。请参见下面的屏幕截图

RGUI

当我使用ESS从emacs内部与R交互时,会发生类似的事情。通常,只要我使用默认的图形设备,就会发生这种情况,例如调用简单的plot函数。当我关闭包含图表的窗口或只是重新聚焦到emacs另一条didBecomeActive消息时。使用ESS这尤其令人讨厌,因为缓冲区已变为只读,我无法直接与控制台交互(解决方法是C-c C-q尝试退出R进程,但随后取消c请求)。

ESS

问题

这些似乎是相关的问题。这些消息是什么?我怎么能抑制它们?在使用图形设备后,如何在Emacs / ESS中自动重新获得对R控制台的控制权?


修改

这些消息记录在system.log中,并且似乎在未经过滤的情况下流入R控制台。 这是一个摘录

Mar 14 12:56:41 xxx-mbp.att.net Google Chrome[1075]: didBecomeActive!
Mar 14 12:56:44 xxx-mbp.att.net Adium[17018]: didBecomeActive!
Mar 14 12:56:45 xxx-mbp.att.net Emacs[5455]: didBecomeActive!
Mar 14 12:56:46 xxx-mbp.att.net Google Chrome[1075]: didBecomeActive!
Mar 14 12:56:47 xxx-mbp.att.net R[16531]: didBecomeActive!
Mar 14 12:56:49 xxx-mbp.att.net Google Chrome[1075]: didBecomeActive!
Mar 14 12:56:53 xxx-mbp.att.net R[16531]: didBecomeActive!
Mar 14 12:56:54 xxx-mbp.att.net Emacs[5455]: didBecomeActive!
Mar 14 12:56:56 xxx-mbp.att.net Google Chrome[1075]: didBecomeActive!

2 个答案:

答案 0 :(得分:2)

这与R.无关。 快速搜索会在Apple的开发者网站上找到与GKTurnBasedEventListener相关的didBecomeActive。你可能已经(有?)在你的系统上的其他地方运行的回合制游戏(它可能已经崩溃并且丢失了一条线程仍然在运行)并且你的R会话正在获得针对" old" PID。 快速重启应修复它或打开一个新的终端和ps aux可能会看到错误的线程并杀死-9它。

答案 1 :(得分:2)

这不是一个正确的答案,但你可以通过在启动时将stderr重定向到文件来至少避免这种情况吗?

rcmd > stdout.log 2> stderr.log

您也可以使用R sink()函数来尝试抑制这些东西。