在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的情況,實際使用中需要考慮。
