在linux編程中,有時候會用到定時功能,常見的是用sleep(time)函數來睡眠time秒;可是這個函數是能夠被中斷的,也就是說當進程在睡眠的過程當中,若是被中斷,那麼當中斷結束回來再執行該進程的時候,該進程會從sleep函數的下一條語句執行;這樣的話就不會睡眠time秒了;linux
頭文件: #include <unistd.h>編程
函數:unsigned int sleep (unsigned int seconds);//n秒緩存
此外:int usleep (useconds_t usec);//n微秒函數
例子:spa
13d 2code 3server 4blog 5進程 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
運行結果截圖以下:
從運行結果能夠看出,當我按下Ctrl+c發出中斷的時候,被該函數捕獲,當處理完該信號以後,函數直接執行sleep下面的語句;
備註:sleep(time)返回值是睡眠剩下的時間;
下面的例子是真正的睡眠time時間(不被中斷影響):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
運行結果截圖以下:
備註:其中recevie the signal is 2.表示該信號是中斷信號;信號的具體值以下圖所示:
最後是sleep函數的man手冊,命令爲:man 3 sleep
備註:能夠使用sleep來實現定時發送機制,例如server和client通訊,定時發送數據或者定時接受數據(設置避免打擾時間內不接收數據),固然定時接受數據可能會形成數據丟失(超過緩存)