当前位置:  技术问答>linux和unix

如何定时执行一个函数。。。希望给详细的代码。。谢谢。。

    来源: 互联网  发布时间:2016-01-26

    本文导语:  我想写一个函数,并让他每隔5秒钟执行一次。。。。有高手能够给我源码吗。。。不要跟我说典型的多线程。。。我不知道怎么用。。。也不要叫我用GTK里面的g_timeout_add............ 高手给个简单的例子,比如每秒输出...

我想写一个函数,并让他每隔5秒钟执行一次。。。。有高手能够给我源码吗。。。不要跟我说典型的多线程。。。我不知道怎么用。。。也不要叫我用GTK里面的g_timeout_add............
高手给个简单的例子,比如每秒输出一个HELLOWORLD之类的,万分感谢呀。。。

|
如何在Linux下实现定时器 
如何在Linux下实现定时器
 
在Linux实现一个定时器,不像Win32下那样直观。在Win32调用SetTimer就行了,在Linux下则没有相应函数可以直接调用。定时器作为一个常用的功能,在Linux当然也有相应实现。下面我们看看几种常用的方法。
 
要实现定时器功能,最土的办法实现莫过于用sleep/usleep来实现了。当然,它会阻塞当前线程,除了处理定时功能外,什么活也干不了。当然要解决这个问题不难,创建一个单独的线程来负责定时器,其它线程负责正常的任务就行了。
 
要实现定时器功能,最简单的办法就是ALARM信号。这种方法简单,也相应的缺陷:用信号实现效率较低; 最小精度为1秒,无法实现高精度的定义器。简单示例:
#include 
#include 
 
static void timer(int sig)
{
    if(sig == SIGALRM)
    {
        printf("timern");
    }
 
    return;
}
 
int main(int argc, char* argv[])
{
    signal(SIGALRM, timer);
 
    alarm(1);
 
    getchar();
 
    return 0;
}
 
(setitimer和alarm有类似的功能,也是通过信号来实现)
 
最优雅的方法是使用RTC机制。利用select函数,你可以用单线程实现定时器,同时还可以处理其它任务。简单示例:
 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
int main(int argc, char* argv[])
{
    unsigned long i = 0;
    unsigned long data = 0;
    int retval = 0;
    int fd = open ("/dev/rtc", O_RDONLY);
 
    if(fd 

    
 
 

您可能感兴趣的文章:

  • system()函数返回什么值时,该函数执行成功?返回什么值时,执行出现错误?谢谢
  • 请教:javascript 里有没有时间循环执行的函数,如我按住鼠标触发mousedown 事件函数时,反复执行我写的一个函数?
  • 为什么执行完execlp函数后程序就退出了,怎样才能让程序继续执行后面的代码
  • pthread_create函数执行问题
  • 急:unix的shell脚本中,定义了一个函数getDate(),在后面的执行命令参数用要使用这个函数的返回值,应该怎么写?
  • 关于被信号打断的函数的执行。
  • 深入探讨:main函数执行完毕后,是否可能会再执行一段代码?
  • 关于内核中函数执行问题
  • 用哪些函数可以得到执行一个程序的系统CPU时间,用户CPU时间,时钟时间啊?
  • 如何获取权限执行特定的函数?
  • main函数在线程执行完毕之前退出, 线程的哪些资源会被清理?
  • 如何导出-g编译出的执行程序的函数信息?
  • popen函数无法执行cd命令
  • php trim函数执行过程解析
  • 回调函数中的线程不能正确执行,大家帮忙看看吧,先谢谢了!
  • C++函数返回值为对象时,构造析构函数的执行细节 iis7站长之家
  • 请问exec系列函数在执行时是立即返回还是有可能阻塞那?
  • 定时执行某函数如何做!!!急求
  • exec函数族执行锐捷认证xrgsu的问题。
  • 等待大侠出手相救,在多线程程序中执行system函数导致CPU利用率不停的增长的问题。
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • 请问JAVA如何执行(调用)操作系统命令,如dir,然后把执行结果存入变量或文件,谢谢!
  • 循环执行readdir,只执行1次,求解,谢谢
  • exe文件怎么执行?linux 下,前边有过帖子,但是在连接不上。谢谢
  • 对不起,我执行了mount -t 但路径错了,怎么销去?谢谢
  • 给个GCC的可执行文件下载地址,谢谢我的是红帽子9.0
  • 请问如何清掉linux的操作命令记录?就是按上下键不能查看以前执行的命令,谢谢
  • 在依root用户登录后,系统还会执行什么脚本吗?(哪个文件里)谢谢
  • 求助:我怎么生存 像 windows 下的 exe 可执行文件啊?谢谢!
  • 请问WebSphere 是什么东东?它在什么操作系统下执行?谢谢!
  • 最后3分,再问一个问题,要在/etc/rc.d/rc.local里添加脚本用来调用一个可执行程序,该怎么写代码?谢谢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 怎么在一个程序的执行过程中中止执行它?比如一个按钮的响应程序中,执行一半中止??20分!!!
  • linux下通过crond实现自动执行程序
  • 我用GCC生成的可执行文件无法直接在shell命令行下执行,这是为什么?可以用调试器调入执行。我用Red Hat7.0
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 如何实现一个线程组内多线程的非同不执行,即一个线程执行完毕后再执行下一个线程???
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 请问:我发现如果在/usr/local/bin 与/usr/bin下都有同一个执行文件时,当在shell下执行时,只会执行/usr/local/bin,下的,怎么改过来?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在UNIX下用PRO*C写了个程序,每次执行都得一个多小时,我想把它放到后台执行,也就是我想交给服务器执行,而我想产掉终端窗口,应该怎么做呢
  • linux下不使用sudo命令执行docker的操作步骤
  • 怎样执行可执行文件?
  • Mysql Select查询执行流程介绍及实例
  • redhat7.1下可执行文件不能执行????
  • C中用system系统调用执行command,执行过程中死锁,如何处理?
  • 在B shell里怎麽执行曾经执行过的命令
  • 请问JSP中的<jsp:forward page=""/>执行后,后边的操作还会执行吗?
  • 执行当前目录下可执行程序时前面必须要加上./才可以,如何解决?
  • 如何在LINUX中在系统启动后自动执行一个执行一个程序?
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • shell 脚本 date 手动执行 和 放在init.d中自动执行的时间不一样


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3