易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : linux

Linux定时器——setitimer()

setitimer()是比较精准的定时器,是Linux的API
以下代码是个倒计时例子:
#include <signal.h>
#include <sys/time.h>
static int time_count=30;
static void sigalrm_handler(int sig)
{
time_count--;
printf("timer signal.. %d\n", time_count);
}
struct itimerval v; //定时器结构体
time_count=10; //再次初始化
signal(SIGALRM, sigalrm_handler);//绑定信号函数
v.it_value.tv_sec=1;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=1;//间隔1s
v.it_interval.tv_usec=0;
setitimer(ITIMER_REAL,&v,NULL); //结构体关联,start
...
...
//=========结束此定时器=====================
v.it_value.tv_sec=0;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=0;
v.it_interval.tv_usec=0;
setitimer(ITIMER_REAL,&v,NULL);

原理既是 1s发送SIGALRM信号一次,将其值置零即为关闭,不在发送信号 ......

Linux驱动的配置和编译脚本

  在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的Linux内核)和modules(模块)。make通过向下递归调用子目录下的Makefile来编译这两个目标。
     通常希望把驱动程序放在内核里,在配置内核时可以自由裁剪。这需要对内核配置脚本Kbuild有一定得了解。具体可以参考内核源码中的Documentation/kbuild目录下的相关文档
    Kbuild是一组很容易使用的脚本。通常只需要关心个目录下的两个文件:Kconfig(2.6内核)和Makefile。
    以hello模块为例
    step1:代码编写
mini2440_hello_module.c 放置的位置/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
代码如下
/**********************************************************************************************/
/*文件:mini2440_hello_module.c     ......

Linux驱动的配置和编译脚本

  在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的Linux内核)和modules(模块)。make通过向下递归调用子目录下的Makefile来编译这两个目标。
     通常希望把驱动程序放在内核里,在配置内核时可以自由裁剪。这需要对内核配置脚本Kbuild有一定得了解。具体可以参考内核源码中的Documentation/kbuild目录下的相关文档
    Kbuild是一组很容易使用的脚本。通常只需要关心个目录下的两个文件:Kconfig(2.6内核)和Makefile。
    以hello模块为例
    step1:代码编写
mini2440_hello_module.c 放置的位置/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
代码如下
/**********************************************************************************************/
/*文件:mini2440_hello_module.c     ......

Linux多线程编程基础

Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时
需要使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux
所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。下面我们展示一个最简单的多线程程序
example1.c。
/* example.c*/
#include <stdio.h>
#include <pthread.h>
void thread(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
}
int main(void)
{
pthread_t id;
int i,ret;
ret=pthread_create(&id,NULL,(void *) thread,NULL);
if(ret!=0)
{
   printf ("Create pthread error!\n");
   exit (1);
}
for(i=0;i<3;i++)
   printf("This is the main process.\n");
pthread_join(id,NULL);
return (0);
}
编译:gcc -o thread1 thread1.c -lpthread
运行结果
This is the main process.
This is the main process.
This is the main process.
Th ......

linux 中的hook

相信熟悉windows编程的高手们都知道,windows为我们提供一些api,这些api用于hook 键盘,鼠标,消息等事件。windows的运行是来源于这些事件驱动的,所以一旦我们截获了这些事件,就可以篡改程序本来的功能了。
但是在Linux中,并不存在这样的api。要抓获内核中的input事件,就必须另外编辑驱动进行额外的处理。
这是以前我在工作中遇到的一个需求:在用户按下某个功能键以后,可以直接调用用户态的程序。
对应于按键,就是在内核中关于input层的处理。在最初并不了解input机制的情况下,我只想弄明白内核是怎么将input的消息传到用户态的。随着调查的不断深入,我发现了在keyboard.c中,有关于input_handle的部分。从这个线索一步步的寻找发现了,这个input_handle就是linux的 hook。
在以后的学习过程中,在阅读arm中的apm emulation时,跟其相关的apm_power.c中就是明显的hook了电源按键的事件,从而将关机消息发送到了apm的事件队列中。
所以如果注册了一个input_handler,那么就能够从input获得所有input事件,当然可以通过设置mask来获得制定类型的事件。比如,如果关心的时扫描码,那么就选择MSC的mask。一旦扫描码就是我们需要的,那么就可以触发对应的操作。
从 ......

linux性能分析工具nmon

      最近一直在做linux后台系统的测试,需要查看系统性能情况,使用过top,vmstat,iostat,sar,memstat,pmap,主要感觉就是不直观,最想有个像windows资源管理器那样的图表工具,今天发现了一个比较好的工具,ibm的免费工具nmon,可以在linux上显示很多性能指标,也可以采集数据生成文件,然后再用nmomanalyser这个工具来分析。这两个工具都是免费,ibm不提供技术支持,但是觉得功能全,对我来说够用了。
      下载nmon,http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
      下载nmomanalyser,http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmonanalyser?showComments=false
      nmom下载后解压的文件是可执行的二进制文件,无需在linux上进行安装,只需要在运行前修改文件的属性使其可以执行:chmod a+x nmonXXX。
      ./nmonXXX即可运行,./nmonXXX -h 显示帮助信息,在运行中按下相应的功能键即可显示相应信息,按下h显示帮助信息,更多请查看帮助命令。
       ......
总记录数:5772; 总页数:962; 每页6 条; 首页 上一页 [953] [954] [955] [956] [957] [958] [959] 960 [961] [962]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号