让socket端口不被子进程继承

有两个程序A,B

A绑定端口8000,然后用system函数启动程序B,然后再把A杀掉,这个时候再重启A的时候会发现绑定端口失败,

原因是端口被B绑定了,实际上是被继承了,为了避免这种情况,需要对主socket设置如下

fcntl(mainSocket, F_SETFD, FD_CLOEXEC);

使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符

https://www.cnblogs.com/yuandaozhe/p/10730752.html

posted @ 2021-01-19 19:58  十七-2020  阅读(213)  评论(0)    收藏  举报