Linux网络编程----fcntl和select

linux 网络编程总结
linux网络编程中两个重要的高级编程函数:fcntl和select
函数原型如下:
1、int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);
2、
int fcntl(int fd , int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock * lock);
 
    函数1:select
    是为了支持网络中多IO机制,也就是所说的并发处理,n是进程创建的最大文件描述符+1,参数readfds、writefds 和exceptfds 称为描述词组,表示文件描述符的各种状态;timeout超时时间值,如果在轮询中超过时间,将检测另一个描述符,一般情况下,select还与下面一些函数共同使用,来检测各个文件描述符的状态改变:
 FD_ZERO(fd_set *fdset):清空fdset与所有文件描述符的联系。
 FD_SET(int fd, fd_set *fdset):建立文件描述符fd与fdset的联系。
 FD_CLR(int fd, fd_set *fdset):清除文件描述符fd与fdset的联系。
 FD_ISSET(int fd, fd_set *fdset):检查fd_set联系的文件描述符fd是否可读写,>0表示可读写。
    返回值:如果为0,则表示说明在设定的时间内,socket的状态没有发生变化。
            如果-1,这说明select函数出错;
            如果其他情况,表明执行成功,检测到文件描述符状态变化。

    函数2:fcntl
    功能:用来操作文件描述词的一些特性。
    参数说明:参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。
    返回值:成功,返回0,失败,返回-1
    例子:下面表示设置套接字描述符sockfd的状态为非阻塞
	fcntl( sockfd, F_SETFL, O_NONBLOCK); 
	// sockfd 是要改变状态的文件描述符. 
	// F_SETFL 表明要改变文件描述符的状态 
	// O_NONBLOCK 表示将文件描述符变为非阻塞的. 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值