
#include <linux/delay.h>
ndelay(int n) 延时n纳秒
但是时间应该是不准的。
较为准确的延迟可以用select,但也只是us级的。
struct timeval tv
tv.tv_sec=0
tv.tv_usec=iUsec //微秒
select(0,NULL,NULL,NULL,&tv)
所有的 sleep/delay 类型的接口,都只能保证休眠时间 "不短于" 传入的参数,但是无法保证绝对精确。精确度和底层实现机制有关(理论上讲任何实现都会有一个最小精度的,比如1us 或者1ms,如果试图delay一个小于最小精度的时长,最终效果就是大于等于最小精度的),也和其他因素有关,比如cpu核数,进程/线程数,优先级,任务调度等。 所以一般只能保证 "不短于" ,无法保证绝对精确。两个方法:1)crontab中的时间设定最小可以到分钟,如果你的延时是分钟级别的,直接放大crontab中的分钟设定即可。
2)修改脚本,在脚本开头(当然要在shell声明语句如#!/bin/bash之后)加usleep(微秒级)或sleep命令(秒级),也可以实现延时。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)