Linux I/O多路复用——select模型实现服务端Socket通信

目录

文件描述符简介

select模型理解

select缺点

select函数

函数原型

参数说明

 fd_set 相关

程序实例


文件描述符简介

        在进程中,每打开一个文件,操作系统就会创建相应的数据结构来描述这个文件,这就是描述文件的文件结构体,同时,在进程的PCB中,会有一个struct files_struct *files的指针,它实际上是指向一个指针数组,而这个指针数组中就存放了每个打开的文件的指针,而所谓的文件描述符,就是这个指针数组的下标,根据文件描述符就能找到对应的文件的指针,就能对该文件进行操作了。在文件描述符进行分配时,会找到当前没有被使用的最小的下标,作为新的文件描述符。其中,0,1,2分别对应标准输出文件描述符,标准输出文件描述符和标准错误文件描述符。因此当打开其他文件时,分配的文件描述符实际上是从3开始的。

select模型理解

         在前面提到的多进程和多线程来实现服务端与客户端通信中,不管是多进程还是多线程,一般来说,每一个连接成功的文件描述符(socket)都需要一个进程/线程来进行监控,然后就需要不断的对每个进程/线程中的文件描述符进行轮询,例如accept、read等函数,如果没有连接请求、缓冲区中没有数据,它们就会一直阻塞住。这样一来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值