linux select函数 shutdown函数
#include<sys/select.h>
#include<sys/time.h>
int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *exceptset,const timeval *timeout);
*timeout: 1,NULL,永远等待;2,等待固定时间(tv_sec,tc_usec);3,不等待(tv_sec=tc_usec=0)
struct timeval{
long tv_sec; 秒数
long tv_usec; 微秒数
};
*readset,*writeset,*exceptset;内核测试 读、写、异常的descriptor
fd_set:long int 数组 fd_set集合通过以下四个宏操作
1,void FD_ZERO(fd_set *fdset); 清空集合
2,void FD_SET(int fd,fd_set *fd_set); 添加fd到集合
3,void FD_CLR(int fd,fd_set *fd_set); 删除fd从集合中
4,int FD_ISSET(int fd,fd_set *fdset); 测试fd是否在集合中
maxfdp1:最大file descriptor plus 1
函数返回后:未就绪descriptor对应的位均清0,所以每次调用select()函数,都需要设置fd_set集合。
返回已就绪的总位数;0,都未就绪;-1,出错
descriptor就绪条件
条件 | 可读吗? | 可写吗? | 异常吗? |
有数据可读 | 1 | ||
读半关闭 | 1(EOF) | ||
给监听套接口准备好新连接 | 1 | ||
有空间可写 | 1 | ||
写半关闭 | 1(SIGPIPE) | ||
待处理错误 | 1(-1,errno) | 1(-1,errno) | |
TCP带外数据 | 1 |
可读/可写可设置低水位标记(SO_RCVLOWAT/SO_SNDLOWAT)默认(1/2048)
#include<sys/socket.h>
int shutdown(int fd,int howto)
howto:1,SHUT_RD 读半关闭; 2,SHUT_WR 写半关闭; 3,SHUT_RDWR 读写半关闭,即全关闭;
return 0/-1
linux select函数 shutdown函数的更多相关文章
- 【unix网络编程第三版】阅读笔记(五):I/O复用:select和poll函数
本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O ...
- linux select函数详解
linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...
- linux select函数:Linux下select函数的使用详解【转】
本文转载自;http://www.bkjia.com/article/28216.html Linux下select函数的使用 Linux下select函数的使用 一.Select 函数详细介绍 Se ...
- 详述socket编程之select()和poll()函数
转自:http://www.cppblog.com/myjfm/archive/2011/10/26/159093.aspx select()函数和poll()函数均是主要用来处理多路I/O复用的情况 ...
- linux 的时区设置函数tzset() 【转】
linux 的时区设置函数tzset() 本文转载于: http://blog.csdn.net/epicyong333/article/details/5258152 tzset #incude & ...
- (笔记)Linux延时及时间函数总结
一. 基础知识1.时间类型.Linux下常用的时间类型有4个:time_t,struct timeval,struct timespec,struct tm.(1)time_t是一个长整型,一般用来表 ...
- UNP学习笔记4——I/O复用:select和poll函数
1 概述 之间的学习中发现,传统的阻塞式系统调用不仅浪费进程运行时间,而且会带来狠毒问题.因此进程需要有一种预先告知内核的能力,使得内核一旦发现进程指定的一个或者多个I/O条件就绪,它就通知进程.这个 ...
- select与poll函数介绍
select与poll函数介绍 在所有依从POSIX的平台上,select函数使我们可以执行I/O多路转接.传向select的参数告诉内核: 1)我们所关心的描述符 2)对于每个描述符我们所关心的状态 ...
- close和shutdown函数的区别
close函数首先是将传入的socket句柄引用数减1(因为fork进程时会导致socket句柄被多个进程引用),待到引用数等于0的时候,close才会真正关闭连接. shutdown函数是立刻关闭连 ...
随机推荐
- 普通用户登录Oracle DB Control
使用 sys 或者 system 用户登录 Oracle DB Control 是没有问题的. 但是,如果是普通的用户需要登录Oracle DB Control,建表或者视图之类的, 则需要授权 SE ...
- js 完美兼容浏览器的复制功能
1,js结合swf的复制功能,完美兼容火狐,谷歌,360,ie8,使用示例:(ps:引入copy.swf比较重要,文件传送门 解压密码:http://www.bieanju.com/,为了防止360删 ...
- 实现FileCopy(Ring0 x86 x64)
1.1 内核不接受一个字符串文件路径,必须填写一个OBJECT_ATTRIBUTES结构. 这个结构,在InitializeObjectAttributes初始化 typedef struct _OB ...
- PHP多线程的实现方法详解
PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen().PHP5之前的版本,你需要自己动手,用sockets扩展解决问题.PHP5的先进之处在于, ...
- 实现JSON数据的存储和读取
事前准备: //创建一个Crime类 public class Crime { private String mTitle; private UUID mUUID; private Date mDat ...
- css中element element和element>element选择器的区别
就是这样的选择器: 比如html中有这样一段布局: <div> <p>我是一个段落</p> </div> 这时你用div p{background:ye ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- PVRTC 纹理
iPhone的图形芯片(PowerVR MBX)对一种称为 PVRTC 的压缩技术提供的硬件支持,Apple推荐在开发iPhone应用程序时使用 PVRTC 纹理.他们甚至提供了一篇很好的技术笔记描述 ...
- gridview外边距
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册 x 本帖最后由 同舟 于 2013-9-30 11:44 编辑 最新项目需要个单行显示功能键 ...
- ISO,CD,iso9660
audio CD与CD-ROM的区别? 1.CD Audio 利用PCM(Pulse Code Modulation)方式,将Analog信号转为Digital Data,并储存在Disc上. CD ...