我有一个程序(Python)在某些时候使用
zmq.Context.socket(zmq.REP)
和
zmq.Context.socket(zmq.PAIR)
套接字,但问题是当程序被杀死时,仍然可以使用以下方法找到套接字:
'ps aux | grep zmq'
命令。那么我该怎么做才能让它们在程序被杀死后消失呢?
根据;
https://superuser.com/questions/127863/manually-closing-a-port-from-commandline
只有应用程序可以关闭它正在使用的套接字,在应用程序进程被终止后,套接字应该会在几分钟内自动释放。你有足够的耐心吗?
您可以使用 SO_REUSEADDR 解决该问题
SO_REUSEADDR 表示用于验证 bind(2) 调用中提供的地址的规则应该允许重用本地地址。对于 AF_INET 套接字,这意味着一个套接字可以绑定,除非有一个活动的侦听套接字绑定到该地址。当侦听套接字使用特定端口绑定到 INADDR_ANY 时,就不可能为任何本地地址绑定到该端口。参数是一个整数布尔标志。
这应该回答你的大部分问题http://hea-www.harvard.edu/~fine/Tech/addrinuse.html