启动子进程优化方案

返回上一级

最近在学习涵曦大佬simpleweb项目时,想利用在网页上起服关服更新git功能。

发现执行起服后,重启simpleweb项目时,端口会重复监听错误。

举例:进程1监听10086端口,进程2不监听任何端口。

进程1利用shell命令启动进程2—-进程2成功启动。

关闭进程1,重新启动进程1,启动失败,报错端口已被占用,监听失败。

原因

实际上,当进程1成功启动进程2后,子进程会复制父进程的地址空间,内核区也会被拷贝进来,包括监听(描述可能不严谨,可百度父子进程(* ̄︶ ̄))

解决方案

shell脚本 可加下面代码

for fd in $(ls /proc/$$/fd/); do
  [ $fd -gt 2 ] && exec {fd}<&-
done

python 可加下面参数(close_fds=True是重点)

subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)

再次含泪感谢涵曦大佬

© 江山山 all right reserved,powered by Gitbook最后更新时间: 2024-08-12 10:00:01

results matching ""

    No results matching ""