mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

GETUT(3C)                                             GETUT(3C)

НАЗВАНИЕ 
        getutent,  getutid,  getutline,  pututline,   setutent,
        endutent, utmpname - доступ к utmp-файлу

СИНТАКСИС 
        #include 
        
        struct utmp *getutent ( )
        
        struct utmp *getutid (id)
        struct utmp *id;
        
        struct utmp *getutline (line)
        struct utmp *line;
        
        void pututline (utmp)
        struct utmp *utmp;
        
        void setutent ( )
        
        void endutent ( )
        
        void utmpname (file)
        char *file;

ОПИСАНИЕ 
        Результатом функций getutent, getutid и getutline явля-
        ется указатель на структуру следующего типа:

        struct utmp {
          char ut_user[8];  /* Входное имя пользователя */
          char ut_id[4];    /* Идентификатор  из  файла
                          /etc/inittab (обычно номер линии) */
          char ut_line[12]; /* Имя  устройства (console, ttyxx) */
          short ut_pid;     /* Идентификатор процесса */
          short ut_type;    /* Тип элемента */
          struct exit_status {
            short e_termination; /* Системный  код   завершения
                                    процесса */
            short e_exit;        /* Пользовательский код завер-
                                    шения */
          } ut_exit;        /* Код  завершения  процесса, поме-
                               ченного как DEAD_PROCESS */
          time_t ut_time;   /* Время создания элемента */
        };

        Функция getutent читает следующий элемент из файла типа
        utmp. Если файл еще не открыт, он открывается. При дос-
        тижении конца файла выполнение функции завершается неу-
        дачей.

        Функция getutid, начиная с текущей позиции, разыскивает
        элемент utmp-файла, в котором поле ut_type соответству-
        ет значению id->ut_type. Если компонент id->ut_type ра-
        вен RUN_LVL, BOOT_TIME, OLD_TIME, или NEW_TIME, то тре-
        буется   точное   равенство  типов. Если  же  компонент
        id->ut_type    равен    INIT_PROCESS,    LOGIN_PROCESS,
        USER_PROCESS, или DEAD_PROCESS, то функция getutid вер-
        нет указатель на первый элемент, тип которого равен од-
        ному  из четырех перечисленных, и поле ut_id соответст-
        вует значению id->ut_id.  Функция  getutid  завершается
        неудачей, если ничего не находит до конца файла.

        Функция getutline, начиная с текущей позиции,  разыски-
        вает    элемент    utmp-файла,   тип   которого   равен
        LOGIN_PROCESS или USER_PROCESS, а  поле  ut_line  соот-
        ветствует значению line->ut_line. Функция getutline за-
        вершается  неудачей,  если  ничего  не находит до конца
        файла.

        Функция pututline записывает указанную utmp-структуру в
        utmp-файл.  При этом для поиска нужного места использу-
        ется функция getutid, если обнаруживается, что  текущая
        позиция  не  является  подходящей.  Предполагается, что
        пользователь, перед тем как обратиться к pututline, ус-
        тановил нужную текущую позицию с помощью одной из функ-
        ций getut. Если это сделано, pututline не будет  произ-
        водить  поиск.  Если pututline не обнаружит подходящего
        места для нового элемента, элемент будет добавлен в ко-
        нец файла.

        Функция  setutent устанавливает указатель текущей пози-
        ции  на начало файла. Это должно быть сделано перед по-
        иском нового элемента, если предполагается,  что  поиск
        должен проводиться во всем файле.

        Функция endutent закрывает открытый файл.

        Функция utmpname позволяет изменить имя обрабатываемого
        файла  с /etc/utmp на любое другое. Предполагается, что
        чаще всего этим другим  именем  будет  /etc/wtmp.  Если
        файл  не существует, он не будет создаваться до первого
        обращения к нему. Функция utmpname  не  отрывает  файл,
        она только закрывает открытый файл и запоминает имя но-
        вого файла.

ФАЙЛЫ 
        /etc/utmp
        /etc/wtmp

СМ. ТАКЖЕ 
        ttyslot(3C), utmp(4).

ДИАГНОСТИКА 
        При  ошибке  ввода/вывода возвращается пустой указатель
        (NULL). Ошибка чтения может  быть  вызвана  отсутствием
        прав доступа или достижением конца файла.

ПРИМЕЧАНИЯ 
        Элемент, к которому было последнее обращение,  сохраня-
        ется в статической структуре, поэтому доступ к несколь-
        ким  элементам требует копирования структур. При каждом
        обращении к getutid или getutline вначале анализируется
        статическая структура. Если она оказывается подходящей,
        никакого поиска  не  производится.  Чтобы  использовать
        getutline  для  поиска нескольких вхождений, необходимо
        очищать статическую структуру после  успешного  поиска,
        иначе  getutline  будет  возвращать все время одно и то
        же. Из правила очистки структуры перед последующим чте-
        нием есть одно  исключение.  Если  неявное  чтение  при
        pututline  обнаруживает,  что  оно  находится на нужном
        месте в файле,  то  содержимое  статической  структуры,
        возвращаемой  getutent, getutid или getutline, не нужно
        очищать, если пользователь только поменял ее содержимое
        и передал указатель функции pututline.

        Все  функции пользуются стандартным буферизованным вво-
        дом/выводом, однако pututline использует  нестандартный
        небуферизованный вывод, чтобы разрешить нескольким про-
        цессам модифицировать файлы utmp и wtmp.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк