getutline()

Найти запись в файле данных о пользователях

Прототип:

#include <utmp.h>
struct utmp * getutline( struct utmp *line );

Аргументы:

line
Указатель на структуру utmp, которую требуется найти в файле данных о пользователях.

Библиотека:

libc

Описание:

Функция getutline() начинает поиск от текущей позиции в файле utmp , и производит его до тех пор, пока не найдет запись типа LOGIN_PROCESS или когда строка ut_line совпадет с line->ut_line. Если функция достигает конца файла, не находя совпадения, то она завершается с ошибкой.

Возвращаемое значение:

Указатель на структуру utmp найденной записи, или NULL , если поиск завершился неудачно.

Переменные окружения:

_PATH_UTMP
Определяет файл информации о пользователях.

Классификация:

Unix

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Предостережения:

Самая последняя запись сохраняется в статической структуре. Скопируйте ее перед дальнейшим доступом.

При каждом вызове getutid() или getutline(), процедура проверяет статическую структуру перед выполнением дополнительных операций ввода/вывода. Если содержимое статической структуры соответствует тому, что она ищет, функция прекращает поиск. По этой причине, используйте getutline() для поиска нескольких вхождений, обнуляйте статическую область после каждого успешного вызова, или getutline() будет возвращать одинаковую структуру при каждом вызове.

Есть одно исключение из правила обнуления структуры до выполнения дальнейшего чтения: неявное чтение, выполняемое pututline() (если она обнаруживает, что она еще не в нужном месте в файле) не повреждает содержимое статической структуры, возвращаемой процедурами getutent(), getutid() или getutline() , если вы просто изменили это содержимое и передали указатель обратно в pututline().

Эти процедуры используют стандартный буферизованный ввод, однако pututline() использует небуферизованную нестандартную запись, чтобы избежать состояния гонки между процессами, пытающимися изменить файлы utmp и wtmp.

Тематические ссылки:

endutent(), getutent(), getutid(), pututline(), setutent(), struct utmp, utmpname()

login в Справочнике по Утилитам




Предыдущий раздел: Описание API системной библиотеки