Linux中五种I/O模式

《Linux网络编程》

五种I/O模式


1、阻塞 I/O
2、非阻塞 I/O
3、I/O 多路复用
4、信号驱动 I/O( SIGIO)
5、异步 I/O

一般来说,程序进行输入操作有两步:
1.等待有数据可以读

2.将数据从系统内核中拷贝到程序的数据区。


对于一个对套接字的输入操作,第一步一般来说是等待数据从网络上传到本地。当数据包到达的时候,数据将会从网络层拷贝到内核的缓存中;第二步是从内核中把数据拷贝到程序的数据区中

1、阻塞 I/O 模式


 进程在调用 recvfrom 一直到从 recvfrom 返回或发生错误,这段时间是阻塞的。当 recvfrom正常返回时,我们的进程继续它的操作。



2、非阻塞模式 I/O


 假设前三次recvfrom从应用层到内核的时候,如果该缓冲区没有数据的话,就直接返回一个EWOULDBLOCK 的错误。第四次我们调用 recvfrom 函数,一个数据报已经到达了,内核将它拷贝到我们的应用程序的缓冲区中,然后 recvfrom 正常返回,我们就可以对接收到的数据进行处理了。

 当一个应用程序使用了

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值