linux文件描述符和套接字的问题
2016-05-03 10:34
337 查看
记得刚学linux的时候 就会听到一句"一切皆文件" 上面标准输入 标准输出 标准错误 重定向 blablabla...
今天在写一个基于epoll的聊天室 客户端fork 父进程负责读 子进程负责写 感觉这好像服务端 主从备份..还像nginx中的进程的模型,各个worker 从 listen 后的 master fork出来的 master负责分发 worker负责处理 主要是映射到各个模块进行处理 所以说nginx 真正工作的是各个模块.其实 以上都是我学习的一些感受,时常联系在一起 做一些对比 感觉很有意思,也会加深理解.
我们知道 linux下 0 是标准输入 1是标准输出 2 是标准错误 当然以上所得是文件描述符 其实套接字底层也是文件描述符 只不过这个文件描述符的功能不同罢了 文件描述符 和内存有很大的关系 以下这个命令可以查看:
cat /proc/sys/fs/file-max 394682
这一点在nginx中体现的更鲜明一点 因为nginx需要处理 客户端的连接 所以要维持与客户端的socket连接 高并发 因此维持很多这样的socket
以上可以看到 服务端先创建一个文件描述符 3 然后在内核又创建一个epollfd 句柄 为 4
int epoll_create(int size);是这个函数来做的
所以在epoll 用完之后要记得 close 否则有可能导致fd消耗殆尽.
新建立一个客户端 连接到server fd 为 5
今天在写一个基于epoll的聊天室 客户端fork 父进程负责读 子进程负责写 感觉这好像服务端 主从备份..还像nginx中的进程的模型,各个worker 从 listen 后的 master fork出来的 master负责分发 worker负责处理 主要是映射到各个模块进行处理 所以说nginx 真正工作的是各个模块.其实 以上都是我学习的一些感受,时常联系在一起 做一些对比 感觉很有意思,也会加深理解.
我们知道 linux下 0 是标准输入 1是标准输出 2 是标准错误 当然以上所得是文件描述符 其实套接字底层也是文件描述符 只不过这个文件描述符的功能不同罢了 文件描述符 和内存有很大的关系 以下这个命令可以查看:
cat /proc/sys/fs/file-max 394682
这一点在nginx中体现的更鲜明一点 因为nginx需要处理 客户端的连接 所以要维持与客户端的socket连接 高并发 因此维持很多这样的socket
以上可以看到 服务端先创建一个文件描述符 3 然后在内核又创建一个epollfd 句柄 为 4
int epoll_create(int size);是这个函数来做的
所以在epoll 用完之后要记得 close 否则有可能导致fd消耗殆尽.
新建立一个客户端 连接到server fd 为 5
相关文章推荐
- Linux基础:文件描述符与重定向
- 【Linux笔记】Linux目录结构
- linux查看常用操作
- 每天一个linux命令(24):Linux文件类型与扩展名
- linux 系统运行级别(转)
- linux和win7设置静态ip
- VmVare的centos虚拟主机琐碎
- linux中解压版eclipse 无法使用问题
- Linux下安装vsftp遇到的问题
- 下面介绍几种查看linux版本信息的方法和GCC版本
- 3.linux man手册
- grub启动linux的一些细节
- 2、linux基础知识与技能
- linux中c表示字符设备文件符号
- Linux指令大全
- 嵌入式linux
- Linux的僵尸进程处理2
- Linux C实现小项目配置文件读取
- Linux的僵尸进程处理1
- linux实现针对文本统计字母出现的次数(所有的可打印的字符)