time - получить
время в
секундах
Standard C library (
libc,
-lc)
#include <time.h>
time_t time(time_t *_Nullable tloc);
time()
возвращает
количество
секунд,
которое
прошло с
начала
эпохи, 1970-01-01 00:00:00 +0000 (UTC).
Если
tloc не
равно NULL, то
возвращаемое
значение
также
сохраняется
в область
памяти, на
которую
указывает
tloc.
On success, the value of time in seconds since the Epoch is returned. On error,
((time_t) -1) is returned, and
errno is set to indicate
the error.
- EFAULT
-
tloc
указывает
за пределы
доступного
адресного
пространства
(однако см.
ОШИБКИ).
- В
системах,
где
обёрточная
функция time()
библиотеки
C вызывает
реализацию,
предоставляемую
vdso(7) (то есть
нет
ловушки в
ядре), из-за
некорректного
адреса
может
генерироваться
сигнал SIGSEGV.
SVr4, 4.3BSD, C99, POSIX.1-2001. POSIX does not specify any error conditions.
В POSIX.1 для
определения
секунд,
прошедших
с начала
эпохи
используется
формула
для
приблизительного
подсчёта
количества
секунд
между
указываемым
временем и
началом
эпохи. Эта
формула
учитывает
тот факт,
что все
годы, номер
которых
делится на 4,
считаются
високосными,
но годы,
которые
делятся на 100
не
високосные,
если они
также не
делятся на 400
(которые
нужно
считать
високосными).
Это
значение
не
является
указанием
на точное
количество
секунд
между
заданным
временем и
началом
эпохи
вследствие
игнорирования
високосных
секунд и по
причине
того, что
время в
часах
необязательно
синхронизировано
со
временем
стандартного
источника.
Считается,
что это
значение
соответствует
настоящему
количеству
секунд,
прошедшему
с начала
эпохи.
Дополнительную
информацию
можно
найти в POSIX.1-2008 Rationale
A.4.15.
On Linux, a call to
time() with
tloc specified as NULL cannot fail
with the error
EOVERFLOW, even on ABIs where
time_t is a signed
32-bit integer and the clock reaches or exceeds 2**31 seconds (2038-01-19
03:14:08 UTC, ignoring leap seconds). (POSIX.1 permits, but does not require,
the
EOVERFLOW error in the case where the seconds since the Epoch will
not fit in
time_t.) Instead, the behavior on Linux is undefined when
the system time is out of the
time_t range. Applications intended to
run after 2038 should use ABIs with
time_t wider than 32 bits.
Ошибка,
возвращаемая
из этого
системного
вызова
неотличима
от
успешного
выполнения
в случае,
когда
момент
времени —
за
несколько
секунд
до
эпохи,
поэтому
обёрточная
функция
библиотеки
C никогда не
изменяет
errno
при
возврате.
Аргумент
tloc
устарел и в
новом коде
всегда
должен
быть равен
NULL. Если
tloc
равно NULL, то
вызов не
может
завершиться
ошибкой.
На
некоторых
архитектурах
реализация
time()
находится
в
vdso(7).
date(1),
gettimeofday(2),
ctime(3),
ftime(3),
time(7),
vdso(7)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]