C 将时钟插入程序

C 将时钟插入程序,c,linux,C,Linux,我想问一下,是否有任何方法可以在每30秒后打开一个文件进行读取。比如,我想插入一个时钟,每30秒调用一个文件打开函数 感谢您,您可以使用定期运行代码。您可以使用定期运行代码。没有任何理由说明为什么不能这样做。它不仅仅是打开文件,你可以在一段时间后做任何你想做的事情。有几种方法可以实现它,甚至可以使用linux提供的服务 你可能想对你想要达到的目标再加一点细节。没有任何理由不这样做。它不仅仅是打开文件,你可以在一段时间后做任何你想做的事情。有几种方法可以实现它,甚至可以使用linux提供的服务 您

我想问一下,是否有任何方法可以在每30秒后打开一个文件进行读取。比如,我想插入一个时钟,每30秒调用一个文件打开函数


感谢您,您可以使用定期运行代码。

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

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


你可能想对你想要达到的目标再加一点细节。

没有任何理由不这样做。它不仅仅是打开文件,你可以在一段时间后做任何你想做的事情。有几种方法可以实现它,甚至可以使用linux提供的服务


您可能希望添加更多关于您想要实现的目标的详细信息。

我不太确定您的程序在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 );
   }
}
#包括
#包括
int main(int argc,char*argv[]){
while(true){
FILE*myFile=fopen(“foo.txt”、“r”);
//你可以随意处理你的文件。
fclose(myFile);
//睡眠30秒,然后再次打开文件。
睡眠(30);
}
}

如果你想在这30秒内做很多其他的计算,你应该考虑多线程,但这是另一个主题;-)p> 我不太确定你的程序在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 );
   }
}
#包括
#包括
int main(int argc,char*argv[]){
while(true){
FILE*myFile=fopen(“foo.txt”、“r”);
//你可以随意处理你的文件。
fclose(myFile);
//睡眠30秒,然后再次打开文件。
睡眠(30);
}
}

如果你想在这30秒内做很多其他的计算,你应该考虑多线程,但这是另一个主题;-)p> 要完成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
    } 
}
#包括
#包括
#定义频率30
无效信号处理器(int信号){
//每秒钟做你想做的事
//重新启用计时器
报警(频率);
}
int main(){
信号(sig_处理器,SIGALRM);
//启用计时器
报警(频率);
而(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
    } 
}
#包括
#包括
#定义频率30
无效信号处理器(int信号){
//每秒钟做你想做的事
//重新启用计时器
报警(频率);
}
int main(){
信号(sig_处理器,SIGALRM);
//启用计时器
报警(频率);
而(1){
//在信号之间你想做什么就做什么
} 
}

这在我的快速测试中似乎有效

你没有回答这个问题,所以这不是答案。如果您想询问更多信息,请添加注释而不是答案。我有一个ha文件,其中的数据将在每30秒后更新。我想问是否有任何内置函数,如我给出的间隔,它将在每30秒后调用文件更新函数。谢谢您没有回答问题,因此这不是答案。如果您想询问更多信息,请添加注释而不是答案。我有一个ha文件,其中的数据将在每30秒后更新。我想问是否有任何内置函数,如我给出的间隔,它将在每30秒后调用文件更新函数。谢谢。请告诉我如何使用alarm()或者它的作用是什么呢?请注意信号处理程序:您的程序随时都可能被中断。它可能在计算或内存写入操作的中途中断。在执行信号处理程序时,您的数据很可能不一致。您能告诉我如何使用alarm()或它的作用吗?谢谢小心信号处理程序:您的程序随时可能被中断。它可能在计算或内存写入操作的中途中断。执行信号处理程序时,您的数据很可能不一致。如果每30秒要做大量工作,您可能不希望sig_处理程序本身发生这种情况。然后sig_handler()应该设置一个标志,您可以在while()循环中测试该标志。但是你会遇到很多其他的麻烦。我想“高级UNIX编程”将详细介绍这一点。如果每30秒有很多工作要做,您可能不希望sig_处理程序本身发生这种情况。然后sig_handler()应该设置一个标志,您可以在while()循环中测试该标志。但是你会遇到很多其他的麻烦。我想“高级UNIX编程”将详细介绍这一点。