当前位置:  技术问答>linux和unix

关于select函数 IS_SET的问题

    来源: 互联网  发布时间:2017-01-15

    本文导语:  IS_SET()宏究竟是干嘛的? while (FD_ISSET(fds[0],&setr) || FD_ISSET(fds[1],&setw)) { if ((select(maxfd + 1, &setr, &setw, NULL, &tv))  0) { buf[count] = ''; printf("count = %d,read : %sn",count,buf); } else { perror("read file1")...

IS_SET()宏究竟是干嘛的?

while (FD_ISSET(fds[0],&setr) || FD_ISSET(fds[1],&setw)) {
if ((select(maxfd + 1, &setr, &setw, NULL, &tv))  0) {
buf[count] = '';
printf("count = %d,read : %sn",count,buf);
} else {
perror("read file1");
}
}

if (FD_ISSET(fds[1],&setw)) { count = write(fds[1],buf,7);

if(count > 0) {
buf[count] = '';
printf("count=%d,write : %sn",count,buf);
} else {
perror("write file2");
}







sleep(5);


}
}
}
比如这段代码 两个if判断有没有的话对程序执行没有影响,那么ISSET究竟是干嘛的呢
求解!跪谢!!!

|
用以判断那个描述符是否有事件发生

|
select会修改rset和wset,select返回之后你去FD_ISSET检查你的描述符是否在rset/wset里,就知道是否发生了什么。

|

+1
有变化的描述符会在rset和wset中,表示有读写。用这个宏方便判断

|
FD_ZERO(fd_set *set)----清除一个文件描述符集;
FD_SET(int fd,fd_set *set)----将一个文件描述符加入文件描述符集中;
FD_CLR(int fd,fd_set *set)----将一个文件描述符从文件描述符集中清除;
FD_ISSET(int fd,fd_set *set)----试判断是否文件描述符被置位

|
是文件描述符,不是文件。

如果一个fd是针对一个普通文件的,那么它永远可读永远可写。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selected定义及介绍
  • 究竟怎么样取得的<select name="select_user" size="8" multiple>值
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selectable定义及介绍
  • man select 结果返回 No manual entry for select
  • java命名空间javax.swing.tree类defaulttreeselectionmodel的类成员方法: selection定义及介绍
  • select <0时调用exit(0),为什么程序没有退出,而是继续执行select了?
  • java命名空间javax.swing.tree类defaulttreecellrenderer的类成员方法: selected定义及介绍
  • insert into select和select into的使用和区别介绍
  • java命名空间java.awt.event类itemevent的类成员方法: selected定义及介绍
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • java命名空间javax.swing类defaultbuttonmodel的类成员方法: selected定义及介绍
  • JDBC里select sum和select返回的字段类型不一样
  • java命名空间javax.swing.text.html类html.tag的类成员方法: select定义及介绍
  • sql代码:select database select all table
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: selected定义及介绍
  • Oracle中select 1和select *的区别
  • java命名空间javax.swing.plaf.synth接口synthconstants的类成员方法: selected定义及介绍
  • jquery下拉select控件操作方法分享(jquery操作select)
  • java命名空间javax.sound.midi类shortmessage的类成员方法: song_select定义及介绍
  • INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别
  • java命名空间javax.swing类jfilechooser的类成员方法: cancel_selection定义及介绍
  • select into 和 insert into select 两种表复制语句


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3