python BaseHTTPServer重启失败,提示端口被占用

简介: 有一个BaseHTTPServer,名为A,监听端口12346;它有10个子进程,通过os.system("nohup xxxx &")启动,也是BaseHTTPServer,名字分别为B0~B9,分别监听9000~9009。
有一个BaseHTTPServer,名为A,监听端口12346;它有10个子进程,通过os.system("nohup xxxx &")启动,也是BaseHTTPServer,名字分别为B0~B9,分别监听9000~9009。A将接收到的请求分发给B0~B9处理。

当重启A时,会提示端口12346被占用,占用者是Bx。原因是A的socket fd被Bx所继承了,A关闭后,Bx取得监听权,端口被占用,导致A无法重启。

解决方法:使用subprocess.Popen('nohup xxx &',shell=True,close_fds=True),close_fds=True将子进程0,1,2以外的所有fd关闭。
在打开socket时,指定close-on-exec标志也可以。
目录
相关文章
|
6月前
|
网络协议 安全 测试技术
21.2 Python 使用Scapy实现端口探测
Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提供了许多有用的功能,例如嗅探网络流量,创建自定义协议和攻击网络的安全测试工具。使用Scapy可以通过Python脚本编写自定义网络协议和攻击工具,这使得网络安全测试变得更加高效和精确。
86 0
21.2 Python 使用Scapy实现端口探测
|
5月前
|
网络协议 前端开发 Java
windows系统下重启springboot项目时,提示端口被占用,却找不到占用端口的程序
windows系统下重启springboot项目时,提示端口被占用,却找不到占用端口的程序
|
5月前
|
Python
python 扫描局域网主机、爆破端口
python 扫描局域网主机、爆破端口
45 0
|
5月前
|
网络协议 Python
21.13 Python 实现端口流量转发
端口流量转发(Port Forwarding)是一种网络通信技术,用于将特定的网络流量从一个端口或网络地址转发到另一个端口或地址。它在网络中扮演着一个非常重要的角色,在Python语言中实现端口转发非常容易。如下这段代码实现了一个基本的TCP端口映射,将本地指定端口的流量转发到指定的远程IP和端口。实现方式是在接收到本地客户端连接请求后,创建一个线程,将本地连接和远程连接之间的数据传输通过线程分别实现,这样就实现了数据在本地和远程之间的单向流动,从而实现了TCP端口映射。
126 0
21.13 Python 实现端口流量转发
|
5月前
|
Python
144 python网络编程 - UDP端口问题
144 python网络编程 - UDP端口问题
16 0
|
8月前
|
Python
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
116 0
|
8月前
|
Linux Python
【从零学习python 】71. 网络端口及其作用
【从零学习python 】71. 网络端口及其作用
53 0
|
11月前
|
Linux 网络安全
linux命令--开放某个端口,重启防火墙,查看已开放的端口号
linux命令--开放某个端口,重启防火墙,查看已开放的端口号
110 0
|
11月前
|
中间件 Java
IBM was调试端口开通演示,was服务重启、端口号查看方法
IBM was调试端口开通演示,was服务重启、端口号查看方法
377 0
|
Python
Python编程:Tornado获取客户端的端口port
Python编程:Tornado获取客户端的端口port
70 0