Майкл Джонсон - Разработка приложений в среде Linux. Второе издание

Тут можно читать онлайн Майкл Джонсон - Разработка приложений в среде Linux. Второе издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство Вильямс, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Разработка приложений в среде Linux. Второе издание
  • Автор:
  • Жанр:
  • Издательство:
    Вильямс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    978-5-8459-1143-8
  • Рейтинг:
    3.8/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Майкл Джонсон - Разработка приложений в среде Linux. Второе издание краткое содержание

Разработка приложений в среде Linux. Второе издание - описание и краткое содержание, автор Майкл Джонсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет собой отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из других операционных систем. Подробно рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование свободно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Изобилие хорошо документированных примеров кода помогает лучше усвоить особенности программирования в Linux.

Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Разработка приложений в среде Linux. Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)

Разработка приложений в среде Linux. Второе издание - читать книгу онлайн бесплатно, автор Майкл Джонсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

#include

time_t time (time_t *t);

Функция time()возвращает количество секунд, прошедших с момента начала эпохи. Если значение tне является нулевым, то данная функция передает в эту переменную количество секунд, прошедших с начала эпохи.

Для решения некоторых проблем требуется более высокая разрешающая способность. В Linux предусмотрен еще один системный вызов — gettimeofday(), который предоставляет более подробную информацию.

#include

#include

int gettimeofday(struct timeval *tv, struct timezone *tz);

struct timeval {

int tv_sec; /* секунды */

int tv_usec; /* микросекунды */

};

struct timezone {

int tz_minuteswest; /* минуты на запад от Гринвича */

int tz_dsttime; /* тип корректировки dst */

};

На большинстве платформ, включая i386, система Linux поддерживает возможность очень точного измерения времени. Стандартные персональные компьютеры содержат встроенные часы, которые обеспечивают информацию о текущем времени с точностью до микросекунд. Оборудование Alpha и SPARC также предлагает высокоточный таймер. На некоторых других платформах система Linux может отслеживать время только в пределах разрешающей способности системного таймера, который в общем случае устанавливается на значение 100 Гц. В связи с этим член tv_usecструктуры timevalв подобных системах может иметь меньшую точность.

В sys/time.hопределены пять макросов для обработки структур timeval.

timerclear(struct timeval *)

Данный макрос очищает структуру timeval.

timerisset(struct timeval *)

Данный макрос проверяет структуру timevalна заполнение (другими словами, отличен ли хотя бы один элемент от нуля).

timercmp(struct timeval *t0, struct timeval *t1, operator)

Данный макрос позволяет сравнивать две структуры timevalв одном временном интервале. Он вычисляется в логический эквивалент t0 операция t1, если t0и t1относятся к арифметическим типам. Обратите внимание на то, что макрос timercmp()не работает для операций <=и >=. Вместо этого нужно применять формы !timercmp(t1, t2, >)и !timercmp(t1, t2, <).

timeradd(struct timeval *t0, struct timeval *t1, struct timeval *result)

Добавляет t0к t1и размещает сумму в переменной result.

timersub(struct timeval *t0, struct timeval *t1, struct timeval *result)

Вычитает t1из t0и передает разность в переменную result.

Третье представление времени struct tmдает время в исчислении, более привычном для человека.

struct tm {

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

long int tm_gmtoff;

const char *tm_zone;

};

Первые девять элементов являются стандартными, последние два — нестандартные, однако очень полезные (они существуют в системах Linux).

tm_sec Количество прошедших секунд в минуте. Принимает значения от 0 до 61 (две дополнительные секунды выделяются для учета лишних секунд, относящихся к високосному году).
tm_min Количество прошедших минут в часе. Принимает значения от 0 до 59.
tm_hour Количество прошедших часов в сутках. Принимает значения от 0 до 23.
tm_mday Номер дня месяца. Принимает значения от 1 до 31. Это единственный элемент, который не может равняться нулю.
tm_mon Количество прошедших месяцев в году. Принимает значения от 0 до 11.
tm_year Количество прошедших лет (считая с 1900 года).
tm_wday Количество прошедших дней в неделе (считая от воскресенья). Принимает значения от 0 до 6.
tm_yday Количество прошедших дней в году. Принимает значения от 0 до 365.
tm_isdst Определяет, поддерживается ли летнее время в текущем часовом поясе, tm_isdstпринимает положительное значение, если время переведено на летнее, 0 — если не переведено, 1 — если система не может это определить.
tm_gmtoff Параметр не является переносимым, поскольку он используется не во всех системах. Если он существует, то он может также называться __tm_gmtoff. Данная переменная указывает число секунд к востоку от UTC или отрицательное число секунд к западу от UTC для часовых поясов к востоку от линии перемены дат.
tm_zone Параметр не является переносимым, поскольку он используется не во всех системах. Если он существует, то он может также называться __tm_zone. Он содержит название текущего часового пояса (некоторые часовые пояса могут иметь несколько имен).

В завершение, стандарт POSIX.1b обработки данных в режиме реального времени поддерживает даже большую разрешающую способность, чем доступные в стандарте struct timevalмикросекунды. В структуре struct timespecиспользуются наносекунды, а также выделено больше пространства для размещения чисел.

struct timespec {

long int tv_sec; /* секунды */

long int tv_nsec; /* наносекунды */

};

18.1.2. Преобразование, форматирование и разбор значений времени

Для взаимно-обратных преобразований времени, выраженного в показателях time_t, и времени, выраженного в показателях struct tm, используются четыре функции. Три из них являются стандартными и доступны во всех системах Linux и Unix. Четвертая, не менее полезная, может применяться не всегда, поскольку она работает только в современных системах Linux. Пятая функция (стандартная) вычисляет разность в секундах между значениями времени time_t. (Обратите внимание на то, что даже аргументы time_tпередаются как указатели, а не как только аргументы struct tm.)

struct tm * gmtime(const time_t *t)

Сокращенная форма времени по Гринвичу; функция gmtime()преобразует значение time_tв struct tm, которое выражает данное время в UTC.

struct tm * localtime(const time_t *t)

localtime()ведет себя подобно gmtime()за исключением того, что создается объект struct tm, выраженный в показателях местного времени. Местное время определяется для всей системы путем установки файлов часовых поясов. Его можно переопределить с помощью переменной окружения TZдля пользователей, работающих в часовом поясе, отличном от того, в котором находится компьютер.

time_t mktime(struct tm *tp);

mktime()преобразует struct tmв time_t, предполагая, что struct tmвыражается в показателях местного времени.

time_t timegm(struct tm *tp);

timegm()ведет себя подобно mktime()за исключением предположения о том, что struct tmвыражается в показателях UTC. Данная функция не является стандартной.

double difftime(time_t time1, time_t time0);

difftime()возвращает число с плавающей запятой, представляющее разность во времени в секундах между двумя значениями time_t. Хотя time_tгарантированно принадлежит к арифметическому типу, единица измерения не определяется в ANSI/ISO С; difftime()возвращает разность в секундах в зависимости от единиц измерения time_t.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Майкл Джонсон читать все книги автора по порядку

Майкл Джонсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Разработка приложений в среде Linux. Второе издание отзывы


Отзывы читателей о книге Разработка приложений в среде Linux. Второе издание, автор: Майкл Джонсон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x