linux系统 下 如何让C语言sleep()函数等待时间小于1秒

linux系统 下 如何让C语言sleep()函数等待时间小于1秒,第1张

sleep()函数大概只能精确到50ms左右,你用sleep(10)是肯定不行的,如果你要精确的定时的话可以使用QueryPerformanceFrequency()函数,用法为:

LARGE_INTEGER litmp

LONGLONG QPart1,QPart2

double dfMinus, dfFreq, dfTim

QueryPerformanceFrequency(&litmp)

dfFreq = (double)litmp.QuadPart// 获得计数器的时钟频率

QueryPerformanceCounter(&litmp)

QPart1 = litmp.QuadPart// 获得初始值

do

{

QueryPerformanceCounter(&litmp)

QPart2 = litmp.QuadPart//获得中止值

dfMinus = (double)(QPart2-QPart1)

dfTim = dfMinus / dfFreq// 获得对应的时间值,单位为秒

}while(dfTim<0.001)

其定时误差不超过1微秒,精度与CPU等机器配置有关。

×××××××××××××××××××××××××

sleep()函数的中等待时间是以毫秒计算的,所以等待1秒就是sleep(1000),如果要让等待时间小于一秒,那么就让传入的参数小于1000就行了.

比如,等待0.1秒:

sleep(100)

1.

第一种方式: crontab -e 1. 然后输入: # 每分钟执行一次 */1 * * * * /usr/local/bin/clear_img.sh 这样执行以后,属于用户自定义的,会被写到 /var/...

2.

第二种方式: 使用命令 vi /etc/crontab 编辑定时脚本 # 每分钟执行一次 */1 * * * * root /usr/local/bin/clear_img.sh 这钟方式是系统级的,对所有...

一、手动修改

1. date命令:查看当前时间

2. date -s 时分秒 :修改时间

还需要把日期改过来

3. date -s 完整日期时间(YYYY-MM-DD hh:mm[:ss]):修改日期、时间

时间要用双引号括起来,否则报错

手动修改会存在一定的时间误差

4. hwclock -w

将时间写入bios避免重启失效。

当我们进行完 Linux 时间的校时后,还需要以 hwclock 来更新 BIOS 的时间,因为每次重新启动的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据呐。

二、同步网络时间

1. 检查系统是否安装ntp服务

安装ntp服务命令:

1

apt-get install ntp  或者 yum install ntp

2. service --status-all:检查ntp服务是否启动

[+]表示服务已启动

3. ntpdate 服务器IP:同步服务器时间

ntp常用服务器:

1

2

3

4

5

6

中国国家授时中心:210.72.145.44

NTP服务器(上海) :ntp.api.bz

美国:time.nist.gov

复旦:ntp.fudan.edu.cn

微软公司授时主机(美国) :time.windows.com

台警大授时中心(台湾):asia.pool.ntp.org

好像有点问题了。。。

服务器换成上海的

时间还是差一分钟,手动把时间与当前时间间隔改大一些,再同步发现有问题,服务器时间根本就不对,差了半天时间,/(ㄒoㄒ)/~~

用微软公司授时主机(美国),发现和上海的服务器时间差不多,那是不是时区设置有问题??

4. 修改服务器时区

4.1 date -R : 查看当前时区

另一台服务器(时间正常)时区:

so,现在要来改时区了

4.2 tzselect

时区没改回来

最后一步

修改成功!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8549881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存