C语言 如何确定同一iOS设备上对端TCP连接的PID ?



由于我不想深入的原因(与第三方库的兼容性有关,我无法更改),我需要使用TCP套接字在iOS的单个进程中执行IPC。

为了防止其他进程与我的TCP IPC套接字通信,我想与操作系统验证调用connect()的进程(从另一个线程)具有与我自己相同的PID。

在OS X上,我注意到netstat没有此信息(不像其他操作系统,如Windows和Linux),我能够确定此信息的唯一方法是使用lsof。我不确定iOS沙盒中可能有什么可用,但到目前为止,我似乎最好的选择(尽管它看起来很昂贵)是弄清楚lsof在做什么,并尝试复制它。

有谁知道我可以使用一个系统调用来检查这个吗?我已经通读了getsockopt(2),没有看到任何适用的内容,而且我找不到关于支持ioctl(2)调用的文档。

这里可能有什么?

哇,对于进程内库来说,这听起来是一个糟糕的API。

接收端的

getpeername应与发送端的getsockname匹配。您可以尝试将它与本地进程中所有打开的fds进行匹配。

最新更新