Разговор о запуске служб на OSX через XPC или MACH

Мне было интересно, есть ли способ для сторонних разработчиков взаимодействовать с агентами запуска и демонами через XPC или Mach. Насколько я понимаю, третье лицо должно знать формат словаря для XPC или иметь доступ к файлу.defs для Mach. Доступны ли какие-либо из них для предустановленных служб запуска? Если нет, то есть ли другой способ взаимодействия с сервисами через код?

1 ответ

Решение

Ваше понимание верно. Для Mach файл.defs используется в качестве входных данных для генератора интерфейса Mach (MIG), который создает код C, используемый для сериализации аргументов в сообщении mach, вызова mach_msg, ожидания ответа и десериализации ответа. Кстати, XPC также использует сообщения "за кулисами", хотя Apple и не говорит вам этого.

Apple не показывает ничего для предустановленных сервисов запуска. Они предоставляют исходные тексты для самого запуска (хотя последняя версия не компилируется из-за отсутствия libxpc.dylib, что неудивительно).

То, что вы можете сделать, это перехватить mach_msg (или перекрывающие функции сообщения xpc_* - это может быть немного сложно, так как большинство из них асинхронные, а фактическое сообщение выполняется GCD-потоком).

Другие вопросы по тегам