Получите StandardErrorPath изнутри процесса в OS X 10.6 - PullRequest
0 голосов
/ 18 мая 2010

Есть ли способ получить стандартный путь ошибки / выхода из процесса? Я попробовал NSTask standardError, но он возвращает NSFileHandle, и мне нужен путь в виде строки. Спасибо!

p.s. StandardErrorPath устанавливается в .plist, который используется launchd для запуска процесса при запуске системы. Процесс представляет собой пакет, записанный в цели c.

1 Ответ

1 голос
/ 20 мая 2010

Нет, ты не можешь. Строго говоря, вы можете использовать много хакерских атак с ОС, но не должны. Вы не должны определять путь для стандартных потоков, открывать путь и писать / читать по нему.

Стандартный ввод / вывод / ошибка не связаны с файлами. Они неразрывно связаны с дескрипторами файлов, которые не обязательно связаны с путем в файловой системе. Они представляют собой намеренную абстракцию над концепцией путей, так что программа всегда может записывать в стандартный ввод / вывод / ошибку, не заботясь о реальных путях. Таким образом, выбор пути осуществляется на стороне пользователя программы, а не самой программы.

Что launchd делает, когда видит StandardErrorPath концептуально это:

  1. Как часть процедуры инициализации, он открывает путь в StandardErrorPath, получает дескриптор файла.
  2. Запустите приложение, установив для этого дескриптора файла «стандартный дескриптор файла ошибок» приложения.

Приложение, когда оно хочет записать в стандартную ошибку, должно просто написать в стандартную ошибку , не попытаться определить путь к файлу для стандартной ошибки и записать в него.

...