Троан Эрик В.
Шрифт:
Однако если вы хотите применять расширения, мы рекомендуем использовать интерфейс utmp, поскольку glibc предоставляет определения, позволяющие записать переносимый код, пользующийся преимуществами расширений.
Существует также смешанный подход — включите оба заголовочных файла и используйте определения, предоставляемые glibc для интерфейса utmp, чтобы решить, применять ли расширения в интерфейсе utmpx. Этого мы не рекомендуем, поскольку нет гарантии, что заголовочные файлы
Здесь документируются лишь наиболее распространенные расширения; документация glibc покрывает все поддерживаемые расширения. Функции utmp работают в терминах
Многие одинаковые элементы являются частью
Элементы массива символов необязательно являются строками, завершающимися
ut_type | Одно из следующих значений: EMPTY , INIT_PROCESS , LOGIN_PROCESS , USER_PROCESS , DEAD_PROCESS , BOOT_TIME , NEW_TIME , OLD_TIME , RUN_LVL или ACCOUNTING , каждое из которых описано ниже. |
ut_tv | Время, ассоциированное с событием. Это единственный элемент, кроме ut_type , определяемый POSIX как всегда подходящий для непустых элементов. В некоторых системах вместо этого есть элемент ut_time , измеряемый только в секундах. |
ut_pid | Идентификатор ассоциированного процесса для всех типов, заканчивающихся на _PROCESS . |
ut_id | Идентификатор inittab ассоциированного процесса, для всех типов, заканчивающихся на _PROCESS . Это первое поле в незакомментированных строках файла /etc/inittab , где поля разделены символами : . Сетевые регистрации, не ассоциированные с inittab, могут использовать это по-другому; например, могут включать части информации об устройстве.4 |
ut_line | Строка (базовое имя устройства или номер локального дисплея для X), ассоциированная с процессом. Спецификация POSIX о состоянии ut_line не ясна; она не считает ut_line значащей для LOGIN_PROCESS , но с другой стороны предполагает, что она значащая для LOGIN_PROCESS , и это подтверждается на практике. POSIX утверждает, что ut_line значащая для USER_PROCESS . На практике она также часто значащая для DEAD_PROCESS , в зависимости от происхождения бездействующего процесса. |
ut_user | Обычно это имя зарегистрированного пользователя; это также может быть имя зарегистрированного процесса (обычно LOGIN ) в зависимости от значения ut_type . |
ut_host | Имя удаленного хоста, вошедшего в систему или иным образом ассоциированного с этим процессом. Элемент ut_host относится только к USER_PROCESS . Этот элемент не стандартизован POSIX. |
ut_exit | ut_exit.e_exit дает код завершения, что предоставляется макросом WEXITSTATUS , a ut_exit.e_termination дает сигнал, вызвавший завершение процесса (если он был завершен сигналом), что предоставляется макросом WTERMSIG . Этот элемент не стандартизован POSIX. |
ut_session | Идентификатор сеанса в системе X Window. Этот элемент не стандартизован POSIX. |
ut_addr_v6 | IP-адрес удаленного хоста в случае активизации USER_PROCESS подключением с удаленного хоста. Используйте функцию inet_ntop для генерирования печатного содержания. Если первая группа не равна нулю, тогда это адрес IPV4 (inet_ntop принимает аргумент AF_INET ); в противном случае это адрес IPV6 (inet_ntop принимает аргумент AF_INET6 ). Этот элемент не стандартизован POSIX. |
Элемент
EMPTY | В данной записи utmp нет достоверных данных (такие записи позже можно повторно использовать), поэтому игнорируйте ее содержимое. Другие элементы структуры являются незначащими. |
INIT_PROCESS | Приведенный процесс был порожден непосредственно инициализацией. Это значение могут устанавливать системные программы (обычно только сам процесс инициализации); приложения должны прочитывать и распознавать это значение, но не должны ее устанавливать. Значащими являются элементы ut_pid , ut_id и ut_tv . |
LOGIN_PROCESS | Экземпляры регистрационной программы, ожидающие регистрации пользователя. Элементы ut_id , ut_pid и ut_tv полезны; элемент ut_user полезен номинально (в Linux он сообщает LOGIN , но это имя процесса регистрации определяется реализацией в соответствии с POSIX). |
USER_PROCESS | Этот элемент определяет лидера сеанса для зарегистрированного пользователя. Это может быть регистрационная программа после регистрации пользователя, управляющая программа монитора либо сеанса для входа в X Window System, программа эмуляции терминала, сконфигурированная для пометки сеансов регистрации, или любая интерактивная регистрация пользователя. Значащими являются элементы ut_id , ut_user , ut_line , ut_pid и ut_tv . |
DEAD_PROCESS | Приведенный процесс был лидером сеанса для зарегистрированного пользователя, но завершился. Значащими являются элементы ut_id , ut_pid и ut_tv в соответствии POSIX. Элемент ut_exit (не установленный POSIX) значащий только в данном контексте. |
BOOT_TIME | Время начальной загрузки системы. В utmp это самая поздняя загрузка; в wtmp это элемент для каждой загрузки системы со времени очистки wtmp. Значащим является только ut_tv . |
OLD_TIME и NEW_TIME | Используются только для записи "скачков" времени. Записываются парами. Не рекомендуется зависеть от записи этих элементов в систему, даже если время на часах по какой-либо причине изменилось. |
RUN_LVL и ACCOUNTING | Внутренние системные величины; в приложениях использовать не следует. |
Ниже приведены интерфейсы, определяемые XPG2, SVID 2 и FSSTND 1.2.
Каждая запись в базе данных utmp или wtmp называется строкой. Все функции, возвращающие указатель на