1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Указатели на структуры, передач структур функциям

Тема в разделе "С и С++", создана пользователем BobiKK, 23 июл 2006.

Статус темы:
Закрыта.
  1. BobiKK

    BobiKK Гость

    Репутация:
    0
    Моя начал изучать Си. Но уже в самом начале моя запутался и никак не распутаться.
    Идея: прочитать файл /var/run/utmp используя как можно меньше системных вызовов. Т.е, используя буферизацию
    Код:
    #include <stdio.h>
    #include <fcntl.h>
    #include <time.h>
    #include <utmp.h>
    
    #define NRECS 16
    #define BUFSIZE (sizeof(struct utmp)* NRECS)
    
    
    int utmp_next(int fd_utmp, struct utmp *curr_utmp)
    {
    static char tmp_utmp[BUFSIZE];
    static int result;
    static int curr_rec = 0;
    if (curr_rec == 0)
    {
    result = read(fd_utmp, tmp_utmp, BUFSIZE);
    if (result == 0) return 0;
    result = result/sizeof(struct utmp);
    }
    curr_utmp = (struct utmp *) &tmp_utmp[curr_rec * sizeof(struct utmp)];
    if (curr_rec < result)
    curr_rec++;
    else curr_rec = 0;
    
    return 1;
    }
    
    void show_utmp(struct utmp *utshow)
    {
    printf("%s\t", utshow->ut_name);
    printf("%s\t", utshow->ut_line);
    printf("\n");
    }
    
    
    int main (int arvg, char *argc[])
    {
    int fd;
    int count;
    struct utmp res_utmp;
    fd = open(UTMP_FILE, O_RDONLY);
    int i;
    while (utmp_next(fd, &res_utmp) != 0)
    {
    show_utmp(&res_utmp);
    }
    return 0;
    }
    gcc вроде бы не ругается, но и вывода никаого нету. Только '\n'
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей