linux定时器
简介
这篇文章主要记录我在试图解决如何尽可能精确地在某个特定的时间间隔执行某项具体任务时的思路历程,并在后期对相关的API进行的归纳和总结,以备参考。
问题引出
很多时候,我们会有类似“每隔多长时间执行某项任务
”的需求,乍看这个问题并不难解决,实则并不容易,有很多隐含条件需要考虑,诸如:时间精度是多少?时间是否允许出现偏差,允许的偏差是多少,偏差之后如何处理?系统的负载如何?这个程序允许占用的系统资源是否有限制?这个程序运行的硬件平台如何?
为了便于分析,我们锁定题目为“每隔2妙打印当前的系统时间(距离UNIX纪元的秒数)
”。
基于sleep的朴素解法
看到这个题目,我想大家的想法和我一样,都是首先想到类似这样的解法:
#
include
<
stdio.
h>
int
main(
int
argc,
char
*
argv[
]
)
{
while
(
1)
{
printf
(
"%d\n"
,
time
(
NULL
)
)
;
sleep
(
2)
;
}
return
0;
}
如果对时间精度要求不高,以上代码确实能工作的很好。因为sleep的时间精度只能到1s:
#
include
<
unistd.
h>
unsigned
int
sleep
(
unsigned
int
seconds)
;
所以对于更高的时间精度(比如说毫秒)来说,sleep就不能奏效了。如果沿着这个思路走下去,还分别有精确到微妙和纳秒的函数usleep和nanosleep可用:
#
include
<
unistd.
h>
int
usleep
(
useconds_t usec)
;
Feature Test
Macro Requirements for
glibc (
see feature_test_macros(
7)
)
:
usleep
(
)
:
_BSD_SOURCE |
|
_XOPEN_SOURCE >
=
500
#
include
<
ti
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<net/if.h>
static char *bad_interface_names[] = {
"lo:",
"lo",
&n ......
呵呵一直一来在WINDOWS下有花生壳等众多的DDNS软件实现动态域名解析。但都是在WINDOWS下的。
今天找到了一个金万维公司提供的免费DDNS服务。主要是提供有LINUX下的安装客户端
安装方法:得到金万维gnhostlinux动态域名Linux/Unix下客户端软件
wget http://www.gnway.com/download/gnhostlinux1.2.6.tgz
......
MYSQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下
面的方法即可让系统定期备份数据。
1、创建备份文件夹
#cd /www
#makedir backup
2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqldump –opt da ......