TL; DR :在RGUI和ESS中,didBecomeActive
消息是什么以及如何抑制它们?
使用OSX 10.9.2中的OSX RGUI 3.0.3,控制台显示记录消息的外观 每当RGUI应用程序变为活动状态时。请参见下面的屏幕截图
当我使用ESS从emacs内部与R交互时,会发生类似的事情。通常,只要我使用默认的图形设备,就会发生这种情况,例如调用简单的plot
函数。当我关闭包含图表的窗口或只是重新聚焦到emacs另一条didBecomeActive
消息时。使用ESS这尤其令人讨厌,因为缓冲区已变为只读,我无法直接与控制台交互(解决方法是C-c C-q
尝试退出R进程,但随后取消c
请求)。
这些似乎是相关的问题。这些消息是什么?我怎么能抑制它们?在使用图形设备后,如何在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!
答案 0 :(得分:2)
这与R.无关。 快速搜索会在Apple的开发者网站上找到与GKTurnBasedEventListener相关的didBecomeActive。你可能已经(有?)在你的系统上的其他地方运行的回合制游戏(它可能已经崩溃并且丢失了一条线程仍然在运行)并且你的R会话正在获得针对" old" PID。 快速重启应修复它或打开一个新的终端和ps aux可能会看到错误的线程并杀死-9它。
答案 1 :(得分:2)
这不是一个正确的答案,但你可以通过在启动时将stderr重定向到文件来至少避免这种情况吗?
rcmd > stdout.log 2> stderr.log
您也可以使用R sink()函数来尝试抑制这些东西。