Я устал от встроенной команды open
Mac OS X, в основном потому, что она запускает программы с вашим действительным идентификатором пользователя вместо эффективного идентификатора пользователя; это приводит к тому, что sudo open Foo
открывает Foo со связанным приложением с вашей учетной записью вместо учетной записи root
, и это меня раздражает. Поэтому я решил сделать какую-то замену.
Пока что я добился успеха: я могу открыть любую программу в режиме open -a
или open -b
и, при необходимости, поддерживать ожидание. Я использую NSTask
для этой цели.
Однако я бы тоже хотел открывать документы. Насколько я вижу, для этого нужно использовать NSWorkspace
, но использование NSWorkspace
для запуска программ приводит к тому, что они запускаются с учетными данными вашей учетной записи вместо учетных данных программы командной строки. Это именно то, что делает инструмент по умолчанию open
, и именно то, чего я не хочу.
Итак, как я могу запросить программу, чтобы другая программа открыла документ без использования NSWorkspace
? Из объекта NSTask
у меня может быть идентификатор процесса, но это все.