3

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


在 OSX 10.9.2 中使用 OSX RGUI 3.0.3,控制台会在 RGUI 应用程序激活时显示日志消息的样子。请看下面的截图

图形用户界面

当我在 emacs 中使用 ESS 与 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!
4

2 回答 2

2

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

rcmd > stdout.log 2> stderr.log

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

于 2014-03-29T01:28:27.410 回答
2

这与 R 无关。快速搜索出现了在 Apple 开发人员网站上与 GKTurnBasedEventListener 相关的 didBecomeActive 引用。您可能(曾经?)在系统的其他地方运行了一个回合制游戏(它可能已经崩溃并迷失了方向,使线程仍在运行)并且您的 R 会话正在获取用于“旧”pid 的信号。快速重启应该修复它或打开一个新终端和 ps aux 以可能看到错误线程并杀死 -9 它。

于 2014-03-14T19:50:45.963 回答