Całkowite pytanie dla początkujących tutaj; Z góry przepraszam.
Załóżmy, że mam demona napisanego w C, który się budziuruchamia się co około pięć minut, wykonuje pewne przetwarzanie, jeśli coś jest w kolejce wejściowej, a następnie wraca do trybu uśpienia. Załóżmy teraz, że istnieje pewne przetwarzanie, które musi wykonać tylko po pewnym (konfigurowalnym) czasie - powiedz , 2 po południu (i przed północą).
W C, jaki jest najszybszy i najlepszy sposób na przekształcenie godziny bieżącej godziny w zmienną int, aby można ją było łatwo porównać z - w celu ustalenia, czy w rzeczywistości jest dzisiaj po 14:00?
Odpowiedzi:
17 dla odpowiedzi nr 1czas lokalny. Widzieć http://linux.die.net/man/3/localtime
struct tm *tm_struct = localtime(time(NULL));
int hour = tm_struct->tm_hour;
7 dla odpowiedzi nr 2
printf("the hour is %dn", localtime(time(NULL))->tm_hour);
Zależy to od tego, że localtime()
zwraca wskaźnik do pamięci statycznej.
7 dla odpowiedzi nr 3
Telefon localtime(time(NULL))
nigdy nie zadziała. Zwracana wartość time()
jest time_t
, a pierwszym argumentem czasu lokalnego jest time_t*
. Ani zaakceptowana odpowiedź, ani odpowiedź z printf nie jest poprawna.
time_t now;
struct tm *now_tm;
int hour;
now = time(NULL);
now_tm = localtime(&now);
hour = now_tm->tm_hour;