2、元的秒数)”。基于sleep的朴素解法看到这个题目,我想大家的想法和我一样,都是首先想到类似这样的解法:#include int main(int argc, char *argv[]){ while (1) { printf("%d", time(NULL)); sleep(2); } return 0;}如果对时间精度要求不高,以上代码确实能工作的很好。因为sleep的时间精度只
3、能到1s: #include unsigned int sleep(unsigned int seconds);所以对于更高的时间精度(比如说毫秒)来说,sleep就不能奏效了。如果沿着这个思路走下去,还分别有精确到微妙和纳秒的函数usleep和nanosleep可用: #include int usleep(useconds_tusec); Feature Test MacroRequirements for
9、#include int poll(struct pollfd *fds, nfds_tnfds, int timeout); #include int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); int epoll_pwait(int epfd, struct
10、 epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask);从函数原型和相关手册来看,poll和epoll_wait能提供的时间精度为毫秒,select比他们两个略胜一筹,为微秒,和前述的usleep相当。但是,果真如此么?这需要我们深入到Linux的具体