Доступ к общей памяти OSX не разрешен из приложений с графическим интерфейсом

У меня есть дистрибутив для OSX, который я внедряю через DYLD_INSERT_LIBRARIES, и он вызывает

shm_open("name", O_RDWR);

Общая память была настроена в другом процессе с использованием

shm_open("name", O_RDWR|O_CREAT, 0777);

Связь между введенным dyld и внешним приложением успешна при запуске в / bin / bash и других программах командной строки. Тестирование в приложениях с графическим интерфейсом, таких как Calculator или Preview, приводит к ошибке при вызове shm_open из введенного dylib. Ошибка «Операция не разрешена».

Кто-нибудь знает причину этого?

1

Решение

Оба приложения, которые вы упомянули — Калькулятор и Предварительный просмотр — находятся в «песочнице». Одна из вещей, которая мешает им делать это, — доступ к общей памяти (за исключением определенных конкретных обстоятельств, которые не относятся к этим приложениям). Смотрите документацию Apple «Руководство по разработке изолированной программной среды приложения: углубленная тестовая среда приложения«для деталей.

Если вам нужно взаимодействовать с произвольными изолированными процессами, вам нужно будет использовать альтернативный метод для этого (возможно, XPC, хотя я не очень знаком с этим). Если вы просто хотите протестировать внедрение dylib в процессах с графическим интерфейсом, попробуйте приложение без песочницы, такое как Stickies (начиная с Mac OS 10.9).

1

Другие решения


По вопросам рекламы [email protected]