将时钟插入程序

时间:2011-02-25 07:59:24

标签: c linux

我想询问是否有任何方法可以在每30秒后打开一个文件进行阅读。就像,我想插入一个时钟,我每隔30秒就调用一次文件打开功能。

由于

4 个答案:

答案 0 :(得分:2)

您可以使用alarm()定期运行代码。

答案 1 :(得分:1)

我不太确定你的程序在30秒内做了什么。但是如果你只是想对你的文件做一个简短的操作并等到下一个30秒,那么你可以在循环中运行这些操作并休眠30秒:

#include <unistd.h>
#include <stdio.h>

int main( int argc, char *argv[] ) {

   while( true ) {
      FILE* myFile = fopen( "foo.txt", "r" );
      // do whatever you like with your file.
      fclose( myFile );

      // sleep for 30 seconds and then open the file again.
      sleep( 30 );
   }
}

如果你想在这30秒内做很多其他的计算,你应该考虑多线程,但这是另一个主题; - )

答案 2 :(得分:1)

要完成Sjoerd的回答,有可能:

#include <unistd.h>
#include <signal.h>
#define FREQ 30
void sig_handler(int signum) {
    // do whatever you want every FREQ seconds

    //reenable the timer
    alarm(FREQ) ;
}

int main() {
    signal(sig_handler, SIGALRM) ;

    //enable the timer
    alarm(FREQ) ;

    while(1) {
        //do whatever you want between signals
    } 
}

它似乎适用于我的快速测试

答案 3 :(得分:-1)

没有任何理由说明为什么不能这样做。它不仅仅是打开文件,你可以在一定间隔后做任何你想做的事情。有几种方法可以实现它,即使使用linux提供的服务也是如此。

您可能希望添加一些关于您想要实现的内容的更多细节。