我是靠谱客的博主 闪闪康乃馨,最近开发中收集的这篇文章主要介绍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 表示将文件描述符变为非阻塞的. 
 

最后

以上就是闪闪康乃馨为你收集整理的Linux网络编程----fcntl和select的全部内容,希望文章能够帮你解决Linux网络编程----fcntl和select所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部