Майкл Джонсон - Разработка приложений в среде Linux. Второе издание
- Название:Разработка приложений в среде Linux. Второе издание
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:2007
- Город:Москва
- ISBN:978-5-8459-1143-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание
Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
long ut_session;
int32_t ut_addr_v6[4];
};
Многие одинаковые элементы являются частью struct utmpx
под тем же именем. Элементы, от которых не требуется быть элементами struct utmpx
, комментируются как "не стандартизованные POSIX" (ни один из них не стандартизован как часть struct utmp
, поскольку сама struct utmp
не стандартизована).
Элементы массива символов необязательно являются строками, завершающимися NULL
. Используйте sizeof()
либо другие ограничения размеров благоразумно.
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. |
Элемент ut_type
устанавливает, каким образом определяются остальные элементы. Некоторые величины ut_type
зарезервированы для записи системной информации; они полезны только для специализированных системных программ и документируются не полностью.
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.
#include
int utmpname(char * file);
struct utmp *getutent(void);
struct utmp *getutid(const struct utmp * id);
struct utmp *getutline(const struct utmp * line);
struct utmp *pututline(const struct utmp * ut);
void setutent(void);
void endutent(void);
void updwtmp(const char * file, const struct utmp * ut);
void logwtmp(const char * line, const char * name, const char * host);
Каждая запись в базе данных utmp или wtmp называется строкой. Все функции, возвращающие указатель на struct utmp
, возвращают его на статические данные в случае успеха и NULL
— в случае ошибки. Обратите внимание, что статические данные переписаны каждым новым вызовом на каждую функцию, возвращающую struct utmp
. Также стандарт POSIX (для utmpx) требует очистки статических данных приложением перед началом какого-либо поиска.
Версии utmpx этих функций принимают struct utmpx
вместо struct utmp
, требуют включения utmpx.h
и называются getutxent
, getutxid
, getutxline
, pututxline
, setutxent
и endutxent
, но в другом случае они идентичны версиям utmp этих функций в Linux. Функции utmpxname()
, определенной POSIX, не существует, хотя некоторые платформы могут определять ее в любом случае (например, glibc).
Интервал:
Закладка: