.\" -*- coding: UTF-8 -*- .\" Copyright 1992, Drew Eckhardt .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH gettimeofday 2 "8 февраля 2026 г." "Linux man\-pages 6.18" .SH НАИМЕНОВАНИЕ gettimeofday, settimeofday \- получает/устанавливает время .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP,\ \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fB[[deprecated]]\fP \fBint gettimeofday(struct timeval *restrict \fP\fItv\fP\fB,\fP \fB struct timezone *_Nullable restrict \fP\fItz\fP\fB);\fP \fB[[deprecated]]\fP \fBint settimeofday(const struct timeval *\fP\fItv\fP\fB,\fP \fB const struct timezone *_Nullable \fP\fItz\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBsettimeofday\fP(): .nf Начиная с glibc 2.19: _DEFAULT_SOURCE В версии glibc 2.19 и более ранних: _BSD_SOURCE .fi .SH ОПИСАНИЕ Функция \fBgettimeofday\fP() и \fBsettimeofday\fP() позволяют получить и задать время, а также часовой пояс. .P The \fItv\fP argument is a \fIstruct timeval\fP (as specified in \fI\fP): .P .in +4n .EX struct timeval { time_t tv_sec; /* секунды */ suseconds_t tv_usec; /* микросекунды */ }; .EE .in .P и задаёт количество секунд и микросекунд, прошедших с начала эпохи (см. \fBtime\fP(2)). .P Аргумент \fItz\fP имеет тип \fIstruct timezone\fP: .P .in +4n .EX struct timezone { int tz_minuteswest; /* количество минут западнее Гринвича */ int tz_dsttime; /* тип корректировки DST */ }; .EE .in .P .\" FIXME . The compilation warning looks to be going away in glibc 2.17 .\" see glibc commit 4b7634a5e03b0da6f8875de9d3f74c1cf6f2a6e8 .\" The following is covered under EPERM below: .\" .P .\" Only the superuser may use .\" .BR settimeofday (). Если \fItv\fP или \fItz\fP имеют значение NULL, то соответствующая структура не задана и не будет возвращена (однако при компиляции будут выдаваться предупреждения, если \fItv\fP равно NULL). .P The use of the \fItimezone\fP structure is obsolete; the \fItz\fP argument should normally be specified as NULL. See VERSIONS. .P В Linux существует специфическое понятие «временной сдвиг» (warp clock), связанное с системным вызовом \fBsettimeofday\fP(), который образуется при самом первом вызове (после загрузки), если аргумент \fItz\fP не равен NULL, аргумент \fItv\fP равен NULL и поле \fItz_minuteswest\fP не равно нулю (в этом случае значение поля \fItz_dsttime\fP должно быть равно нулю). В этом случае предполагается, что время аппаратных часов (CMOS clock) местное и к нему должен быть добавлен этот параметр для того, чтобы получилось время UTC. Но, как мы и говорили, использовать этот метод не рекомендуется. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" \fBgettimeofday\fP() and \fBsettimeofday\fP() return 0 for success. On error, \-1 is returned and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEFAULT\fP Одно из значений в \fItv\fP или \fItz\fP находится вне доступного адресного пространства. .TP \fBEINVAL\fP (\fBsettimeofday\fP()): неверное значение \fItimezone\fP. .TP \fBEINVAL\fP (\fBsettimeofday\fP()): \fItv.tv_sec\fP is negative or \fItv.tv_usec\fP is outside the range [0, 999,999]. .TP \fBEINVAL\fP (начиная с Linux 4.3) .\" commit e1d7ba8735551ed79c7a0463a042353574b96da3 (\fBsettimeofday\fP()): выполнялась попытка установки времени в значение меньше текущего значения часов \fBCLOCK_MONOTONIC\fP (смотрите \fBclock_gettime\fP(2)). .TP \fBEPERM\fP У вызывающего процесса недостаточно прав для вызова \fBsettimeofday\fP(); в Linux для этого требуется мандат \fBCAP_SYS_TIME\fP. .SH ВЕРСИИ .SS "Отличия между библиотекой C и ядром" На некоторых архитектурах реализация \fBgettimeofday\fP() находится в \fBvdso\fP(7). .P The kernel accepts NULL for both \fItv\fP and \fItz\fP. The timezone argument is ignored by glibc and musl, and not passed to/from the kernel. Android's bionic passes the timezone argument to/from the kernel, but Android does not update the kernel timezone based on the device timezone in Settings, so the kernel's timezone is typically UTC. .SH СТАНДАРТЫ Отсутствуют. .SH ИСТОРИЯ 4.3BSD, SVr4. SUSv1 and POSIX.1\-2001 XSI described \fBgettimeofday\fP() but not \fBsettimeofday\fP(). POSIX.1\-2008 XSI marked \fBgettimeofday\fP() as obsolete, recommending the use of \fBclock_gettime\fP(2) instead. Likewise, \fBclock_settime\fP(2) should be used instead of \fBsettimeofday\fP(). POSIX.1\-2024 removed \fBgettimeofday\fP(). .P .\" Обычно, поля \fIstruct timeval\fP имеют тип \fIlong\fP. .SS "Поле tz_dsttime" .\" it has not .\" been and will not be supported by libc or glibc. .\" Each and every occurrence of this field in the kernel source .\" (other than the declaration) is a bug. В системах с не ядрами Linux, но с glibc, полю \fItz_dsttime\fP из \fIstruct timezone\fP вызов \fBgettimeofday\fP() присвоит ненулевое значение, если в текущем часовом поясе уже применялось или будет применяться правило перехода на летнее время. В этом смысле это зеркально отражает назначение \fBdaylight\fP(3) для текущего пояса. В Linux с glibc значение поля \fItz_dsttime\fP из \fIstruct timezone\fP никогда не используется в \fBsettimeofday\fP() или \fBgettimeofday\fP(). Таким образом, следующий абзац представляет только исторический интерес. .P В старых системах поле \fItz_dsttime\fP содержит символьную константу (значения приведены ниже), которая включает в себя информацию о сезонной коррекции времени (Daylight Saving Time) (замечание: эта величина постоянна и указывает лишь на алгоритм коррекции). Существующие алгоритмы сезонной коррекции: .P .in +4n .EX \f[B]DST_NONE\fR /* not on DST */ \f[B]DST_USA\fR /* USA style DST */ \f[B]DST_AUST\fR /* Australian style DST */ \f[B]DST_WET\fR /* Western European DST */ \f[B]DST_MET\fR /* Middle European DST */ \f[B]DST_EET\fR /* Eastern European DST */ \f[B]DST_CAN\fR /* Canada */ \f[B]DST_GB\fR /* Great Britain and Eire */ \f[B]DST_RUM\fR /* Romania */ \f[B]DST_TUR\fR /* Turkey */ \f[B]DST_AUSTALT\fR /* Australian style with shift in 1986 */ .EE .in .P Of course, it turned out that the period in which Daylight Saving Time is in force cannot be given by a simple algorithm, one per country; indeed, this period is determined by unpredictable political decisions. So this method of representing timezones has been abandoned. .SH ПРИМЕЧАНИЯ На время, возвращаемое \fBgettimeofday\fP(), \fIвлияют\fP скачки в системном времени (например, если системный администратор вручную изменил системное время). Если вам требуются однообразно увеличивающееся время, смотрите \fBclock_gettime\fP(2). .P Для работы со структурой \fItimeval\fP существуют макросы, описанные в \fBtimeradd\fP(3). .SH "СМОТРИТЕ ТАКЖЕ" \fBdate\fP(1), \fBadjtimex\fP(2), \fBclock_gettime\fP(2), \fBtime\fP(2), \fBctime\fP(3), \fBftime\fP(3), \fBtimeradd\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7), \fBvdso\fP(7), \fBhwclock\fP(8) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT debian-l10n-russian@lists.debian.org списка рассылки русских переводчиков .ME .