日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 定时器和sleep,linux中sleep函数的使用和总结

發布時間:2024/9/19 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 定时器和sleep,linux中sleep函数的使用和总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在linux編程中,有時候會用到定時功能,常見的是用sleep(time)函數來睡眠time秒;但是這個函數是可以被中斷的,也就是說當進程在睡眠的過程中,如果被中斷,那么當中斷結束回來再執行該進程的時候,該進程會從sleep函數的下一條語句執行;這樣的話就不會睡眠time秒了;

頭文件: #include

函數:unsigned int sleep (unsigned int seconds);//n秒

此外:int usleep (useconds_t usec);//n微秒

例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include

#include

#include

#include

void?sig_handler(int?num)

{

printf("\nrecvive the signal is %d\n", num);

}

int?main()

{

int?time?= 20;

signal(SIGINT, sig_handler);

printf("enter to the sleep.\n");

sleep(time);

printf("sleep is over, main over.\n");

exit(0);

}

運行結果截圖如下:

從運行結果可以看出,當我按下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

#include

#include

#include

#include

void?sig_handler(int?num)

{

printf("\nrecvive the signal is %d\n", num);

}

int?main()

{

int?time?= 20;

signal(SIGINT, sig_handler);

printf("enter to the sleep.\n");

//sleep(time);

do{

time?= sleep(time);

}while(time?> 0);

printf("sleep is over, main over.\n");

exit(0);

}

運行結果截圖如下:

備注:其中recevie the signal is 2.表示該信號是中斷信號;信號的具體值如下圖所示:

最后是sleep函數的man手冊,命令為:man 3 sleep

備注:可以使用sleep來實現定時發送機制,例如server和client通信,定時發送數據或者定時接受數據(設置避免打擾時間內不接收數據),當然定時接受數據可能會造成數據丟失(超過緩存)

總結

以上是生活随笔為你收集整理的linux 定时器和sleep,linux中sleep函数的使用和总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。