当前位置: 技术问答>linux和unix
关于父子共用一个socket的问题?求教。。
来源: 互联网 发布时间:2016-04-11
本文导语: 写了个客户端,要支持异步通信,于是在父进程connect产生socket 然后子进程fork出来,则继承了这个socket,我的父进程专门用来发送的,子进程专门用来接收的。我想实现的是一次交互后(发送过去然后接收回来)就...
写了个客户端,要支持异步通信,于是在父进程connect产生socket 然后子进程fork出来,则继承了这个socket,我的父进程专门用来发送的,子进程专门用来接收的。我想实现的是一次交互后(发送过去然后接收回来)就断开链接。
我想问下,在关闭socket的时候需要父子进程都close(socketFD)吗?需要shutdown(socketFD, SHUT_RDWR)吗?,如果只关闭父进程里的或者子进程里的socket会有什么影响吗?
我想问下,在关闭socket的时候需要父子进程都close(socketFD)吗?需要shutdown(socketFD, SHUT_RDWR)吗?,如果只关闭父进程里的或者子进程里的socket会有什么影响吗?
|
子进程是父进程的拷贝.父进程以后的操作不会影响子进程的.相反,也一样
|
一个建议
子进程,dup 一个, 不用关闭
父进程也dup一个,不用关闭
子进程,dup 一个, 不用关闭
父进程也dup一个,不用关闭
|
通过dup出来的socket要关闭
只有全部关闭后socket才是真正地被关闭了
只有全部关闭后socket才是真正地被关闭了
|
调用close()只有当该描述符是指向某文件的最后一个拷贝时才真正关闭.所以在父进程与子进程调用close不给对方造成影响.而shutdown()则不管这么多,它就直接关闭了.
可能描述得不是很准确,请见谅.
可能描述得不是很准确,请见谅.
|
按你的需求, 还是直接shutdown吧,更保险一点.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。