linux定时器设置
10.5.2 精通定时器设置
函数alarm设置的定时器只能精确到秒,而以下函数理论上可以精确到微妙:
#include <sys/select.h>
#include <sys/itimer.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval
*value, struct itimerval *ovalue);
函数setitimer可以提供三种定时器,它们相互独立,任意一个定时完成都将发送定时信号到进程,并且自动重新计时。参数which确定了定时器的类型,如表10-6所示:
表10-6 参数which与定时器类型
取值
含义
信号发送
ITIMER_REAL
定时真实时间,与alarm类型相同。
SIGALRM
ITIMER_VIRT
定时进程在用户态下的实际执行时间。
SIGVTALRM
ITIMER_PROF
定时进程在用户态和核心态下
的实际执行时间。
SIGPROF
这三种定时器定时完成时给进程发送的信号各不相同,其中ITIMER_REAL类定时器发送SIGALRM信号,ITIMER_VIRT类定时器发送SIGVTALRM信号,ITIMER_REAL类定时器发送SIGPROF信号。
函数alarm本质上设置的是低精确、非重载的ITIMER_REAL类定时器,它只能精确到秒,并且每次设置只能产生一次定时。函数setitimer设置的定时器则不同,它们不但可以计时到微妙(理论上),还能自动循环定时。在一个Unix进程中,不能同时使用alarm和ITIMER_REAL类定时器。
结构itimerval描述了定时器的组成:
struct itimerval
{
struct timeval it_interval; /* 下次定时取值 */
struct timeval it_value; /* 本次定时设置值 */
}
结构timeval描述了一个精确到微妙的时间:
struct timeval
{
long tv_sec; /* 秒(1000000微秒) */
long tv_usec; /* 微妙 */
}
函数setitimer设置一个定时器,参数value指向一个itimerval结构,该结构决定了设置的定时器信息,结构成员it_value指定首次定时的时间,结构成员it_interval指定下次定时的时间。定时器工作时,先将it_value的时间值减到0,发送一个信号,再将it_value赋值为it_interval的值,重新开始定时,如此反复。如果it_value值被设置为0,则定时器停止定时;如果it_value值不为0但it_interval值为0,则定时器在一次定时后终止。
函数setitimer调用成功时返回0,否则返回-1,参数ovalue如果不为空,返回上次
相关文档:
windows(dos)下的换行符 和 linux (ubuntu)下的换行符是不同的。
在涉及到DOS下的文本 在LINUX下 操作时,就涉及到换行符不同带来的麻烦。
,在DOS使用的换行符为 ^M$,我们称为CR与LF两个符号。而在Linux中,则仅有LF ($) 这个换行符。这个换行符对于
Linux的影响很大。
我们说过,在开始执行Linux命令时,它的判断依
......
下面的文件的使用方法是:将下面的文件保存在linux内核源码目录中,文件的名称是.config,然后make menuconfig,在出现
的配置界面中选择Load Configuratio选项,然后可以在这个基础上修改自己的kernel。下面的配置是基于s3c2410,支持yaffs2
文件系统。我看了一下编译出来的uImage大概在800k左右,呵呵么这是本人第一次成 ......
Linux驱动的一些基本操作
Linux内核中定义了很多宏,对硬件端口和寄存器进行操作,从网上搜集了一些宏定义的信息:
1. __REG简单的说就是获得后面所示物理地址映射后的虚拟地址,例如:
#define GPLR0 __REG(0x40E00000) /* GPIO Pin-Level Register GPIO<31:0> */
#define GPL ......
在各种Linux分发版中,大多数都已经默认集成了snmpd,比如在suse10中,你可以这样开启snmpd:
suse10:~ # /etc/init.d/snmpd start
如果没有默认安装,你要做的就是自己来编译snmpd,按照下边的步骤,非常简单。
编译和安装
对于Linux平台,我们推荐使用Net-SNMP,它实现了标准的SNM ......
在服务器上写部署项目的脚本 ,需要把上传来的最新的项目解压, 部署 ,启动服务 实现自动化
于是找到最新的文件是第一件事情
就得到了以下脚本
$ ls -lrt | awk '/xmhi/ { f=$NF };END{ print f }'
中间的xmhi是文件所包含的字符串
另外如果要ls出所有的文件名
$ ls -l |awk '{print$9}' ......