arcgis栅格数据平滑_基于ArcGIS的栅格图像平滑处理(转)

本文介绍了Linux Socket编程中I/O Multiplexing的实现方式,主要讲解了select和poll函数的使用,包括它们的参数、返回值及易出错的地方,并提供了一个简单的select Echo server的代码示例,帮助理解这两个函数的工作原理。
摘要由CSDN通过智能技术生成

Linux Socket 编程中I/O Multiplexing 主要通过三个函数来实现:select,

poll,epoll来实现。I/O

Multiplexing,先构造一张有关描述符的列表,然后调用一个函数,直到这些描述符中的一个已准备好进行I/O时,该函数才返回。在返回时,它告诉进程哪些描述符已准备好可以进行I/O。本文具体介绍一下select

和poll的用法,给出简单的demo代码,简要分析一下这两个函数的使用易出错的地方。

#include

int select(int maxfdp1, fd_set *restrict readfds, fd_set *restrict writefds,fd_set *restrict exceptfds, struct timeval*restrict tvptr);//Returns: count of ready descriptors, 0 on timeout, -1 on error

中间三个参数readfds、writefds和exceptfds是指向描述符集的指针。这三个描述符集说明了我们关心的可读、可写或出于异常条件的各个描述符,设置为NULL则表示不关心。每个描述符集存放在一个fd_set数据类型中。这种数据类型为每一可能的描述符保持一位。描述符集的函数接口(可能实现为宏)包括:调用FD_ZERO将一个指定的fd_set变量的所有位设置为0;调用FD_SET设置一个fd_set变量的指定位;调用FD_CLR将一指定位清楚;调用FD_ISSET测试一指定位是否设置。

#include

int FD_ISSET(int fd, fd_set *fdset);//Returns: nonzero if fd is in set, 0 otherwise

void FD_CLR(int fd, fd_set *fdset);void FD_SET(int fd, fd_set *fdset);void FD_ZERO(fd_set *fdset);

文件描述符集fdset中的文件描述符的个数是有限制的,最大值由FD_SETSIZE指定,一般为1024.

Select 最后一个参数用于设置超时值,当select监听达到超时值时还未有关心的事件发生则返回,函数返回值为0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值