您的当前位置:首页正文

【2023-03-04】QProcess启动进程后继承父进程fd导致的现场问题

2024-11-27 来源:个人技术集锦

项目场景:

相关背景:


问题描述

问题现象:

  1. 在运行一段时间后,调用MainServer的http服务接口,出现接口不再响应的问题。
  2. 通过日志观察发现,在接口不响应之前,提示服务异常,被守护进程重新拉起;
  3. 日志显示,最近的一次拉起动作提示”http 的server端口绑定异常!“;

原因分析:

  1. 输入命令,查看端口被占用的进程;
netstat -atlnup|grep 1888
  1. 从获取的信息发现,占用的进程为ffmpeg进程,键入命令查询进程信息;
ps -ef|grep ffmpeg
  1. 发现该进程为推流进程,是MainServer启动的;目前由于MainServer被守护进程拉起,所以它的父进程ID变成了1;
  2. 从这个现象,可以分析出,是ffmpeg推流进程占用了1888端口。结论是:

ffmpeg进程本身不会使用1888端口,而它的父进程MainServer会使用;所以ffmpeg是继承了父进程的资源文件描述符,也就是这个socketfd,最终显示占用;

  1. 下面是程序里的代码片段;
 .........................此处省略前置代码.............
显示全文