Чтение онлайн

на главную - закладки

Жанры

Программирование для Linux. Профессиональный подход

Самьюэл Алекс

Шрифт:

Перечислим наиболее интересные поля этой структуры.

■ 

ru_utime
. Здесь находится структура типа
timeval
, в которой указано, сколько пользовательского времени (в секундах) ушло на выполнение процесса. Это время, затраченное центральным процессором на выполнение программного кода, а не системных вызовов.

■ 

ru_stime
. Здесь находится структура типа
timeval
, в которой указано, сколько системного времени (в секундах) ушло на выполнение процесса. Это время, затраченное центральным процессором на выполнение системных вызовов от имени данного процесса.

■ 

ru_maxrss
. Это максимальный объем физической памяти, которую процесс занимал в какой-то момент своего выполнения.

В листинге 8.5 приведена функция, которая показывает, сколько пользовательского и системного времени потребил текущий процесс.

Листинг 8.5. (prinf-cpu-times.c) Определение пользовательского и системного времени, затраченного на выполнение текущего процесса

#include <stdio.h>

#include <sys/resource.h>

#include <sys/time.h>

#include <unistd.h>

void print_cpu_time {

 struct rusage usage;

 getrusage(RUSAGE_SELF, &usage);

 printf("CPU time: %ld.%061d sec user, %ld.%061d sec system\n",

usage.ru_utime.tv_sec, usage.ru_utime.tv_usec,

usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);

}

8.7, Функция gettimeofday: системные часы

Функция

gettimeofday
определяет текущее системное время. В качестве аргумента она принимает структуру типа
timeval
, в которую записывается значение времени (в секундах), прошедшее с начала эпохи UNIX (1-е января 1970 г., полночь по Гринвичу). Это значение разделяется на два поля. В поле
tv_sec
хранится целое число секунд, а в поле
tv_usec
— дополнительное число микросекунд. У функции есть также второй аргумент, который должен быть равен
NULL
. Функция объявлена в файле
<sys/time.h>
.

Результат, возвращаемый функцией

gettimeofday
, мало подходит для отображения на экране, поэтому существуют библиотечные функции
localtime
и
strftime
, преобразующие это значение в нужный формат. Функция
localtime
принимает указатель на число секунд (поле
tv_sec
структуры
timeval
) и возвращает указатель на структуру типа
tm
. Эта структура содержит поля, заполняемые параметрами времени в соответствии с локальным часовым поясом:

■ 

tm_hour
,
tm_min
,
tm_sec
— текущее время (часы, минуты, секунды);

■ 

tm_year
,
tm_mon
,
tm_day
год, месяц, день;

■ 

tm_wday
— день недели (значение 0 соответствует воскресенью);

■ 

tm_yday
— день года;

■ 

tm_isdst
— флаг, указывающий, учтено ли летнее время.

Функция

strftime
на основании структуры
tm
создает строку, отформатированную по заданному правилу. Формат напоминает тот, что используется в функции
printf
: указывается строка с кодами, определяющими включаемые поля структуры. Например, форматная строка вида

"%Y-%m-%d %Н:%М:%S"

соответствует такому результату:

2001-01-14 13:09:42

Функции

strftime
необходимо задать указатель на текстовый буфер, куда будет помещена полученная строка, длину буфера, строку формата и указатель на структуру типа
tm
. Следует учесть, что ни функция
localtime
, ни функция
strftime
не учитывают дробную часть текущего времени (поле
tv_usec
структуры
timeval
). Об этом должен позаботиться программист.

Объявления функций

localtime
и
strftime
находятся в файле
<time.h>
.

Программа, показанная в листинге 8.6, отображает текущие дату и время с точностью до миллисекунды.

Листинг 8.6. (print-time.c) Отображение даты и времени

#include <stdio.h>

#include <sys/time.h>

#include <time.h>

#include <unistd.h>

void print_time {

 struct timeval tv;

 struct tm* ptm;

 char time_string[40];

 long milliseconds;

 /* Определение текущего времени и преобразование полученного

значения в структуру типа tm. */

 gettimeofday(&tv, NULL);

 ptm = localtime(&tv.tv_sec);

 /* Форматирование значения даты и времени с точностью

до секунды. */

 strftime(time_string, sizeof(time_string),

"%Y-%m-%d %H:%M:%S", ptm);

 /* Вычисление количества миллисекунд. */

 milliseconds = tv.tv_usec / 1000;

 /* Отображение даты и времени с указанием

числа миллисекунд. */

 printf("%s.%03ld\n", time_string, milliseconds);

}

Поделиться:
Популярные книги

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Бояръ-Аниме. Газлайтер. Том 35

Володин Григорий Григорьевич
35. История Телепата
Фантастика:
аниме
боевая фантастика
фэнтези
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 35

Лекарь Империи 4

Карелин Сергей Витальевич
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 4

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Вперед в прошлое 8

Ратманов Денис
8. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 8

Второгодка. Книга 5. Презренный металл

Ромов Дмитрий
5. Второгодка
Фантастика:
городское фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Второгодка. Книга 5. Презренный металл

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый V

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Адептка второго плана

Мамаева Надежда Николаевна
Попасть в историю
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Адептка второго плана

Двойник короля 17

Скабер Артемий
17. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 17

Кодекс Охотника. Книга XXVII

Винокуров Юрий
27. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXVII

Травник

Назимов Константин Геннадьевич
1. Травник
Фантастика:
фэнтези
5.00
рейтинг книги
Травник

Последний Паладин. Том 3

Саваровский Роман
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 3

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII