sleep()非系統調用,sleep()是在庫函數中實現的,它是通過alarm()來設定報警時間,使用sigsuspend()將進程掛起在信號SIGALARM上。
sleep()只能精確到秒級上。sleep()會令目前的進程暫停,直到達到參數seconds 所指定的時間,或是被信號所中斷。
return:若進程暫停到參數seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余秒數。
除了時間單位為微秒以外,在使用上與sleep()差不多。還有就是實現也是不同的,sleep因為是用alarm實現的,所以時間單位為s ,而usleep的時間單位為us
,那肯定不是由alarm實現的,所以說它們的實現不同,但都是linux用的,而window下不能用,因為都是sleep和usleep都是在unistd.h下定義的。
return:若進程暫停到參數seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余微秒數。
這個函數功能是暫停某個進程直到妳規定的時間後恢復,參數req就是妳要暫停的時間,其中req->tv_sec是以秒為單位,而tv_nsec以毫微秒為單位(10的-9次方秒)。由於調用nanosleep是是進程進入TASK_INTERRUPTIBLE,這種狀態是會相應信號而進入TASK_RUNNING狀態的,這就意味著有可能會沒有等到妳規定的時間就因為其它信號而喚醒,此時函數返回-1,切還剩余的時間會被記錄在rem中。
return: 若進程暫停到參數 req所指定的時間,成功則返回0,若有信號中斷則返回-1,並且將剩余微秒數記錄在 rem中。
unistd.h 是 unix 系統標準頭文件,用於系統調用,相當於win32中的windows.h,unistd.h 定義的函數只能用於UNIX環境中,而不能用於windows。所以sleep 和 usleep 只能用於linux下,而不能用於windows 。
nalosleep 和 其它時間日期操作函數壹樣都是定義在time.h中的,所以都適用