Как вы определяете PID однорангового TCP-соединения на том же устройстве iOS? - PullRequest
0 голосов
/ 23 ноября 2011

По причинам, которые я бы предпочел не использовать (связано с совместимостью со сторонней библиотекой, которую я не могу изменить), мне нужно использовать TCP-сокет для выполнения IPC в рамках одного процесса в iOS.

Чтобы другие процессы не могли общаться с моим сокетом TCP IPC, я хотел бы проверить в ОС, что процесс, вызывающий connect() (из другого потока), имеет тот же PID, что и мой.

В OS X я заметил, что netstat не имеет этой информации (в отличие от других операционных систем, таких как Windows и Linux), и единственный способ определить эту информацию - использовать lsof.Я не уверен, что может быть доступно в песочнице iOS, но пока мне кажется, что моя лучшая ставка (даже если она кажется дорогой) - выяснить, что делает lsof, и попытаться повторить это.

Кто-нибудь знает системный вызов, который я могу использовать, чтобы проверить это?Я уже прочитал getsockopt(2) и не вижу ничего подходящего, и я не могу найти документацию о том, какие звонки ioctl(2) поддерживаются.

Что здесь возможно?

1 Ответ

1 голос
/ 24 ноября 2011

Ничего себе, это звучит как ужасный API для библиотеки в процессе.

getpeername на принимающей стороне должен соответствовать getsockname отправляющей стороны.Вы можете попытаться сопоставить его со всеми открытыми fds в локальном процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...