Вставьте часы в программу - PullRequest
       1

Вставьте часы в программу

0 голосов
/ 25 февраля 2011

Я хочу спросить, есть ли способ открывать файл для чтения через каждые 30 секунд. Например, я хочу вставить часы, в которые через каждые 30 секунд я вызываю функцию открытия файла.

Спасибо

Ответы [ 4 ]

2 голосов
/ 25 февраля 2011

Вы можете периодически запускать код, используя alarm () .

1 голос
/ 25 февраля 2011

Чтобы завершить ответ 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
    } 
}

это похоже на мой быстрый тест

1 голос
/ 25 февраля 2011

Я не совсем уверен, что ваша программа делает в течение 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 секунд, вы должны рассмотреть многопоточность, но это уже другая тема; -)

0 голосов
/ 25 февраля 2011

Нет никаких причин, почему это нельзя сделать.Это не просто открытие файлов, вы можете делать все, что вы хотите после определенного интервала.Есть несколько способов реализовать его, даже используя службы, предоставляемые linux.

Вы можете добавить немного больше подробностей о том, чего вы хотите достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...