unix socket上的连接数

问题描述:

给定一个unix socket地址,我可以通过POSIX api调用获得连接数吗?unix socket上的连接数

或者我将不得不走过/ proc文件系统?

+1

您应该澄清'任意unix套接字地址';给定标签,你可能是指“任意Unix域套接字”,而不是“Unix机器上的任意套接字地址”。下面有一条评论,表明您也在使用Cygwin,这表明Windows主机。 –

+0

是的,这就是我的意思,'任意Unix域套接字'。我说POSIX,而不是cygwin,因为我想尽可能保持跨平台的任何可能的解决方案。 – rhlee

我假设你指的是一个端口上当前连接的数量,而不是一个套接字fd的生命周期中的总连接数,这是我第一次想到的。恐怕最便携的方法是popen(“netstat -n”,“r”)并尝试解析它。 POSIX在系统/网络管理工具方面给了我们很少的帮助。

+1

是的,我只需要unix域套接字上当前的连接数。不幸的是我的目标系统是cygwun,并且netstat不能作为一个包提供,也没有源代码编译。因此,我希望能够给我提供信息的API调用。 – rhlee

+0

你如何获取Unix域套接字?从你编写的程序开始?我不相信你会找到一个简单的API调用,可以做你想做的。 *但是*如果我们知道上下文,就可以使用一些函数调用等等。更多细节将需要@rhlee – Chimera

+0

@Jim Norton:基本上我使用/修改cygwin上的dtach。 Dtach使用命名的bsd套接字进行主/从通信,因此使用命名空间进行会话。如果dtach意外终止,套接字仍然保留,所以您不知道会话是否仍在运行。我认为我正在尝试的是socket的lsof不起作用http://unix.derkeiler.com/Newsgroups/comp.unix.admin/2003-12/0019.html。去给艾伦的答案,因为它看起来不像有任何真正的方法来做到这一点。但是你提到了一些函数调用?如果你能详细说明吉姆,会非常感激。 – rhlee