linux中A进程调用system执行shell,启动B进程然后kill A进程,这个时候再启动A进程时,报错端口被占用了

怎么解决?补充:发现,有一个子进程监听了B进程... 怎么解决?
补充:发现,有一个子进程监听了B进程
展开
 我来答
charleszhangji
2016-09-19 · TA获得超过4554个赞
知道小有建树答主
回答量:887
采纳率:0%
帮助的人:948万
展开全部
进程A使用system调用执行一个命令,会生成一个子进程C来执行,当启动进程Bkill了A进程后,进程A打开的文件描述符会由子进程继承,所以A原本占用的端口(其实 就是文件描述符)就被子进程C占用了。
正确的方法应该是先停止子进程C,然后再让进程A退出。或者在进程A的代码中,使用unix编程接口,不要让子进程继承继承文件描述符(这个比较复杂,需要自己看unix编程的书)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式