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函数是立刻关闭连 ...
随机推荐
- HDU 5256 - 序列变换 ,树状数组+离散化 ,二分法
Problem Description 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数.请输出最少需要修改多少 ...
- (Qt 翻译) QGLSceneNode
#include <QGLSceneNode> QGLSceneNode ( QObject * parent = 0 ) QGLSceneNode ( const QGeometryDa ...
- Lucene学习之初步了解
全文搜索 比如,我们一个文件夹中,或者一个磁盘中有很多的文件,记事本.world.Excel.pdf,我们想根据其中的关键词搜索包含的文件.例如,我们输入Lucene,所有内容含有Lucene的文件就 ...
- mysql优化(2) 观察mysql进程状态
环境准备,安装sysbench wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12 ...
- java创建对象的几种常用方法
java几种常见的创建对象的方法: 1.使用new关键字创建对象 2.利用java的反射机制,通过java.lang.Class或者java.lang.reflect.Constructor创建对象 ...
- Linux下去掉Windows文件的^M
Windows下文件换行符为\r\n 而Linux下文件的换行为\n 因此在Linux下可以使用vim编辑文件 使用全文替换命令 :%s/\r//g 将\r全部替换掉 也可以在Linux使用dos ...
- Asp.net Mvc 中的模型绑定
asp.net mvc中的模型绑定可以在提交http请求的时候,进行数据的映射. 1.没有模型绑定的时候 public ActionResult Example0() { ) { string id ...
- 迎接 Windows Azure 和 DNN 挑战,几分钟内快速构建网站!
编辑人员注释:本文章由高级商务策划师兼开发平台推广者 Neeti Gupta 撰写. 曾几何时,构建一个简单的网站需要耗费好几个月的时间.在过去,.NET 开发人员和设计社区的一些成员使用 DNN(以 ...
- webpack入门笔记
此为第一篇主要是webpack入门笔记: http://if-true.com/2015/10/16/webpack-tutorial-translate.html
- hdu 4597 Play Game(区间dp,记忆化搜索)
Problem Description Alice and Bob are playing a game. There are two piles of cards. There are N card ...