由于我不想深入的原因(与第三方库的兼容性有关,我无法更改),我需要使用TCP套接字在iOS的单个进程中执行IPC。
为了防止其他进程与我的TCP IPC套接字通信,我想与操作系统验证调用connect()
的进程(从另一个线程)具有与我自己相同的PID。
在OS X上,我注意到netstat
没有此信息(不像其他操作系统,如Windows和Linux),我能够确定此信息的唯一方法是使用lsof
。我不确定iOS沙盒中可能有什么可用,但到目前为止,我似乎最好的选择(尽管它看起来很昂贵)是弄清楚lsof
在做什么,并尝试复制它。
有谁知道我可以使用一个系统调用来检查这个吗?我已经通读了getsockopt(2)
,没有看到任何适用的内容,而且我找不到关于支持ioctl(2)
调用的文档。
这里可能有什么?
哇,对于进程内库来说,这听起来是一个糟糕的API。
接收端的 getpeername
应与发送端的getsockname
匹配。您可以尝试将它与本地进程中所有打开的fds进行匹配。