11:00、12:00 など、1 時間ごとにいくつかのパラメーターを変更する必要がある Linux 上のアプリケーションがあり、システムの日付はユーザーがいつでも変更できます。
時間が xx:59 から xx+1:00 に変わったときに私に提供する信号、posix 関数はありますか?
通常、localtime(3)
秒ごとに現在の時刻を取得してから、分の部分が と等しいかどうかを比較し0
ます。ただし、これは良い方法ではないようです。変更を検出するには、1 時間ごとに同じ関数を呼び出す必要があります。特に、少ないリソースを使用するのに適した組み込みボードでコードを実行します。
これが私がそれを行う方法のサンプルコードです:
static char *fetch_time() { // I use this fcn for some other purpose to fetch the time info
char *p;
time_t rawtime;
struct tm * timeinfo;
char buffer[13];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime (buffer,13,"%04Y%02m%02d%02k%02M",timeinfo);
p = (char *)malloc(sizeof(buffer));
strcpy(p, buffer);
return p;
}
static int hour_change_check(){
char *p;
p = fetch_time();
char current_minute[3] = {'\0'};
current_minute[0] = p[10];
current_minute[1] = p[11];
int current_minute_as_int = atoi(current_minute);
if (current_minute_as_int == 0){
printf("current_min: %d\n",current_minute_as_int);
free(p);
return 1;
}
free(p);
return 0;
}
int main(void){
while(1){
int x = hour_change_check();
printf("x:%d\n",x);
sleep(1);
}
return 0;
}