Linux下的select,注意咯,不是pselect。select()函数的最后一个参数是timeout,用来设置超时用的。用的是一个struct timeval结构,需要用到sys/time.h文件。struct timeval { long tv_sec; 秒 long tv_usec; 毫毛}设置了timeout的值之后呢,select在没有文件描述符监视可用的情况下,会等待这个timeout的时间,时间到了select返回0如果timeout超时之前有文件描述符可用,则返回可用的数量,这时候的timeout则会依然计数,因此如果想要每次都超时一定的时间那么在slelect返回>0的值之后要重新装填timeout的值一次。www.linuxidc.com以保证超时时间没有变化。如果tv_sec和tv_usec都是0,那么就是超时时间为0,那么select就会立刻返回了。如果timeout这里是个NULL,那么超时就未被启用,会一直阻塞在监视文件描述符的地方。在pselect中的timeout更牛X用到了struct timespec { long tv_sec; 秒 long tv_nsec; 纳秒}时间更精确。当然了系统做不了这么精确的事情,一般Linux的系统精度也就是10ms左右了。这里说的重点在于timeout的值的选择和处理上。另外遇到的一个问题是信号SIGALRM会使得select返回-1并置errno为EINTR。但这个信号已经被我的sigaction干掉了函数处理了,这个问题还需要研究一下。Linux中su的使用说明Linux应用程序中的定时器相关资讯 Linux教程
- Linux教程:如何在命令行中查看目 (07/28/2014 12:22:23)
- Linux 修改root密码 (11/03/2012 07:53:38)
- su - root 与su root的区别 (06/06/2012 00:39:40)
| - Linux进程间通信:消息队列 (01/28/2013 09:43:00)
- U盘安装Linux开机无法启动解决方法 (10/07/2012 08:55:52)
- Windows 7/Linux 同步时间 (05/15/2012 06:17:55)
|
本文评论 查看全部评论 (0)