LINUX.ORG.RU

localtime выдает иногда время в UTC


0

1

Возник такой вопрос: в многопоточном приложении, написанном на C++, при серьезной нагрузке сервера (загрузка всех ядер под 90-100%) вызывается все время функция localtime, которая выдает локальное время в нужном часовом поясе, но иногда она возвращает UTC время.

В чем проблема и как с этим бороться, может быть кто-то с таким сталкивался?

если с точки зрения админа, то процесс не смог получить доступ к /etc/localtime, такое бывало из-за недостатка прав. У тебя видимо не не смог а не успел(?) получить доступ. В strace посмотри обращения к /etc/localtime

zolden ★★★★★
()

man 3 localtime

NOTES
       The four functions asctime(), ctime(), gmtime() and localtime() return
       a pointer to static data and hence are not  thread-safe.   Thread-safe
       versions  asctime_r(),  ctime_r(),  gmtime_r()  and  localtime_r() are
       specified by SUSv2, and available since libc 5.2.5.

?

Deleted
()
Ответ на: комментарий от AkhramovichSA

AkhramovichSA

почему же он выдает правильное время но в UTC?

Потому что не смог получить информацию о временной зоне, хранящейся в /etc/localtime

The localtime() function converts the calendar time timep to broken-down time representation, expressed relative to the user's specified timezone.  The function  acts  as  if  it
       called  tzset(3)  and  sets  the  external variables tzname with information about the current timezone, timezone with the difference between Coordinated Universal Time (UTC) and
       local standard time in seconds
zolden ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.