Python套接字创建重复的套接字

2024-09-27 23:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有两个进程,它们通过socket IPC相互通信 配置deamon是用python编写的,nsm是用C编写的。一个文件用于创建这个套接字,即/var/tmp/.nsm\u cfgd\u stats。 在启动期间,将创建此套接字,并将nsm列在此套接字中。 因此,当从配置deamon执行一个新命令时,我每次都得到一个新的套接字,而不是使用现有的套接字。 cfgd端的代码片段是

fd = cfgd.io.nbsocket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
fd.connect("/var/tmp/.nsm_cfgd_stats")
fd.send(struct.Struct("=L").pack(0xA5))

nbsocket.socket将调用socket类的构造函数,它只是python socket类的包装器

def __init__(self, family=stdsocket.AF_INET, type=stdsocket.SOCK_STREAM, proto=0, _sock=None):
    self._sock = _sock if _sock else stdsocket.socket(family,type,proto)
    self._timeout = None
    self._sock.setblocking(0)

但是如果我运行netstat命令,我得到的输出是

/root # netstat -an | grep nsm_cfgd_stats
unix  2      [ ACC ]     STREAM     LISTENING       1591 /var/tmp/.nsm_cfgd_stats
unix  3      [ ]         STREAM     CONNECTING         0 /var/tmp/.nsm_cfgd_stats

我不知道为什么会出现这种行为?这与python套接字类或操作系统中的其他问题有关

操作系统不是Linux,而是基于Linux 3.14内核版本

提前谢谢


Tags: 命令selfstreamvarstatssockettmpsock

热门问题