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

24:   herror("getservbyname failed");

25:   return 1;

26:  }

27:

28:  printf("служба: %s\n", service->s_name);

29:  printf("tcp-порт: %d\n", ntohs(service->s_port));

31:  /* отобразить все псевдонимы, которые имеет данная служба */

32:  if (*service->s_aliases) {

33:   printf("псевдонимы:");

34:   for (ptr = service->s_aliases; *ptr; ptr++)

35:    printf(" %s", *ptr);

36:   printf("\n");

37:  }

38:

39:  return 0;

40: }

Ниже показан пример запуска программы. Обратите внимание на то, что она извлекает службы либо по каноническому имени, либо по псевдониму.

$ ./services http

служба: http

tcp-порт: 80

$ ./services source

служба: chargen

tcp-порт: 19

псевдонимы: ttytst source

<p>Глава 18</p><p>Время</p><p>18.1. Вывод времени и даты</p><p>18.1.1. Представление времени</p>

В системах Unix и Linux время отслеживается в секундах до или после начала эпохи, которое определяется как полночь 1 января 1970 года по UTC[148]. Положительные значения времени относятся к периоду после начала эпохи; отрицательные — до начала эпохи. Для того чтобы обеспечить работу процессов в режиме текущего времени, в Linux, как и во всех остальных версиях Unix, предусмотрен системный вызов time().

#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;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных