Linux下使用select延時


  在LINUX用戶態的情況下,如果想要延時的話,可以使用用sleep函數,但是在一些情況下,需要更小單位的延時,ms/us 也是要的。用循環獲取到的延時是不精確的。

  • sleep是不准確,這個函數是可以中斷的;

  • sleep容易受到系統信號,例如SIGALRM影響,各個系統版本實現不一,sleep是個glic庫函數,不是系統調用;

 

  

使用如下:

fd_set rfds;
struct timeval tv;
int retval;

/* Watch stdin (fd 0) to see when it has input. */
FD_ZERO(&rfds);
FD_SET(0, &rfds);

/* Wait up to five seconds. */
tv.tv_sec = 5;
tv.tv_usec = 0;

retval = select(1, &rfds, NULL, NULL, &tv);

  上面的例程沒有處理EINTR的情況,實際使用中需要考慮。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM