Консоль R и сообщения `didBecomeActive`
TL; DR: в RGUI и ESS, каковы didBecomeActive
сообщения и как их подавить?
Работая с OSX RGUI 3.0.3 в OSX 10.9.2, консоль отображает то, что выглядит как запись сообщений в журнал всякий раз, когда приложение RGUI становится активным. Смотрите скриншот ниже
Нечто подобное происходит, когда я взаимодействую с R из Emacs, используя ESS. Обычно это происходит всякий раз, когда я использую графическое устройство по умолчанию, например, вызывая простое plot
функция. Когда я закрываю окно, содержащее график, или просто перефокусируюсь на другой Emacs didBecomeActive
сообщение. С ESS это особенно раздражает, потому что буфер стал доступным только для чтения, и я не могу напрямую взаимодействовать с консолью (обходной путь должен C-c C-q
попытаться выйти из процесса R, но затем отменить запрос с c
).
Вопрос
Кажется, это связанные проблемы. Что это за сообщения? Как я могу их подавить? Как я могу восстановить контроль над консолью R в Emacs/ESS автоматически после использования графического устройства?
редактировать
Эти сообщения вошли в систему 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 ответа
Это неправильный ответ, но вы можете хотя бы избежать этого, перенаправляя stderr в файл при запуске?
rcmd > stdout.log 2> stderr.log
Вы также можете поиграть с функцией R sink(), чтобы попытаться подавить это.
Это не имеет ничего общего с R. Появляется быстрый поиск didBecomeActive со ссылкой на GKTurnBasedEventListener на сайте разработчиков Apple. Возможно, у вас (была?) Пошаговая игра, запущенная в другом месте вашей системы (которая могла рухнуть и потерять свой путь, оставив поток все еще работающим), и ваш сеанс R получает сигналы, предназначенные для "старого" pid. Быстрая перезагрузка должна исправить это или открыть новый терминал и ps aux, чтобы возможно увидеть ошибочный поток и убить -9 его.