【github myLocker】select监听多个fd,互斥锁保护终端交互

select监听多个fd

select用于多个fd的管理,检测哪个fd可读、可写,如果可读则接收消息(读),如果可写则输出消息(写)。
相关的函数:

int select(int nfds, fd_set *readfds, fd_set *writefds,
          fd_set *exceptfds, struct timeval *timeout);

void FD_CLR(int fd, fd_set *set);        /* 将某个fd从集合set中删除 */
int  FD_ISSET(int fd, fd_set *set);        /* 检测fd是否还在集合set中 */
void FD_SET(int fd, fd_set *set);        /* 将fd加入集合set中 */
void FD_ZERO(fd_set *set);                /* 将集合set清空 */

其中,select函数的选项timeout很有用,当其是NULL时,函数无限期阻塞;当其是{0,0}时,立即返回结果;当其是某一个大于0的时间值时,表示一定时间后return。
关于timeout:

struct timeval {
   long    tv_sec;         /* seconds */
   long   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值