我们有两个进程,它们通过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内核版本
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐