【webbench】socket中close()和shutdown()区别
来源:互联网 发布:农村淘宝店在哪申请 编辑:程序博客网 时间:2024/06/06 06:36
最近看webbench和Tinyhttpd源码的一点学习:
在fork()或create()一个新的进程时,关闭socket连接总是用close()而不是shutdown(),百度了一下区别:
首先介绍一下close()和shutdown():
函数:int shutdown(int s, int how);
函数说明:shutdown()用来终止参数s 所指定的socket 连线. 参数s 是连线中的socket 处理代码, 参数how有下列几种情况:
how=0 终止读取操作.
how=1 终止传送操作
how=2 终止读取及传送操作
返回值:成功则返回0, 失败返回-1, 错误原因存于errno.
函数:int close(int s);
函数说明:close()用来终止参数s 所指定的socket 连线.
返回值:成功则返回0, 失败返回-1, 错误原因存于errno.
区别:
1.可以看到很明显的就是参数导致的区别:进程中close关闭一个socket,将终止进程对这个socket的任何的操作,但是使用shutdown可以选择的关闭关闭的方式,包括SHUT_RD(读),SHUT_WR(x写),SHUT_RDWR(读写) 三种方式。
2.在多个进程共享socket时候,一个进程调用close只会使计数减一(引用计数?),直到所有的进程都调用的了colse,这个socket才会被释放,
如果一个进程调用shutdown,那个这个所有的进程将不能再使用读、写或者读写。
总结区别2 ,就是close不会影响其他进程对socket的使用,shutdown会影响其他进程对socket的使用。
0 0
- 【webbench】socket中close()和shutdown()区别
- socket中close()和shutdown()区别
- Socket 编程中 close() 和 shutdown() 有什么区别?
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭close和shutdown的区别
- socket关闭的close和shutdown区别
- socket关闭close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket shutdown和close的区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket shutdown和close的区别
- socket中的close和shutdown区别
- 《linux内核完全剖析》笔记03-进程创建
- Shell - 23
- SparkR (R on Spark)
- Android中的asset和raw文件夹
- Docker命令使用详解
- 【webbench】socket中close()和shutdown()区别
- 常用正则表达式
- 简单跨域请求和带预检的跨域请求
- OkHttp 基础(1)
- 一个关于android旋转屏幕界面的方法
- HTML5画布Canvas坐标轴转换、图案填充、渐变与阴影
- Activiti 自定义用户管理和组管理
- 如何使用Git和GitHub来管理自己的代码
- Bionic API中的进程交互