如何确定同一iOS设备上对等TCP连接的PID?

时间:2011-11-23 19:33:55

标签: c ios tcp sockets

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

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

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

有没有人知道我可以使用系统调用来检查这个?我已阅读getsockopt(2)并且看不到任何适用的内容,但我找不到有关支持ioctl(2)次呼叫的文档。

这里有什么可能?

1 个答案:

答案 0 :(得分:1)

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

接收端的

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