С точки зрения UNIX, поскольку я не очень разбираюсь в разработке для Mac.
Консоль "распределена" по умолчанию. Однако вы не можете приказать ОС открыть консоль. Вы можете сказать IDE, которую вы используете, чтобы открыть его в терминале, или, если он поддерживает это, создать ваше текущее приложение как консольное приложение, несмотря на использование графического интерфейса.
Что я имею в виду, говоря, что консоль выделена по умолчанию? Фактически каждый процесс получает свои stdin
, stdout
и stderr
(идентификаторы файлов 0, 1 и 2) от вызывающего процесса. Таким образом, если вызывающий процесс (bash
, Finder, что угодно) случайно не забывает оставить их открытыми, у вас всегда будет открыта консоль... но, возможно, невидимая?
Самый простой способ получить консоль — запустить приложение из терминала, как Finder сделал бы это из графического интерфейса. Помните, что .apps на самом деле являются папками:
/projects/myapp$ ./BuiltApplication.app/Contents/MacOS/BuiltApplication
Finder устанавливает текущий рабочий каталог в папку, в которой находится пакет .app, поэтому вышеприведенное эмулирует все это лучше всего.
Кроме того, взгляните на консольное приложение /Applications/Utilities/Console.app
, входящее в состав MacOS. Консоль обычно используется для просмотра stdout и stderr. Я не могу проверить это, так как я не на Mac, но я действительно нашел несколько источников, в которых говорится, что stdout и stderr должны быть перенаправлены туда. Посмотрите это сообщение:
Вы можете использовать Console.app для просмотра вывода приложений, запущенных обычным образом, потому что инфраструктура запуска специально отправляет туда свои stdout
и stderr
. Вы также можете использовать подпрограммы asl
для запроса журнала или для выполнения более сложной регистрации, если хотите.
person
Ivan Vučica
schedule
06.10.2009