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

Здесь есть возможность читать онлайн «Марк Митчелл - Программирование для Linux. Профессиональный подход» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2002, ISBN: 2002, Издательство: Вильямс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование для Linux. Профессиональный подход: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование для Linux. Профессиональный подход»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Программирование для Linux. Профессиональный подход — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование для Linux. Профессиональный подход», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Структура timevalбыла описана в разделе 8.7. "Функция gettimeofday(): системные часы"

В листинге 8.11 показано, как с помощью функции setitimer()отслеживать выполнение программы. Таймер настроен на интервал 250 мс, по истечении которого генерируется сигнал SIGVTALRM.

Листинг 8.11. ( itimer.c ) Пример создания таймера

#include

#include

#include

#include

void timer_handler(int signum) {

static int count = 0;

printf("timer expired %d times\n", ++count);

}

int main() {

struct sigaction sa;

struct itimerval timer;

/* Назначение функции timer_handler обработчиком сигнала

SIGVTALRM. */

memset(&sa, 0, sizeof(sa));

sa.sa_handler = &timer_handler;

sigaction(SIGVTALRM, &sa, NULL);

/* Таймер сработает через 250 миллисекунд... */

timer.it_value.tv_sec = 0;

timer.it_value.tv_usec = 250000;

/* ... и будет продолжать активизироваться каждые 250

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

timer.it_interval.tv_sec = 0;

timer.it_interval.tv_usec = 250000;

/* Запуск виртуального таймера. Он подсчитывает фактическое

время работы процесса. */

setitimer(ITIMER_VIRTUAL, &timer, NULL);

/* Переход в бесконечный цикл. */

while (1);

}

8.14. Функция sysinfo(): получение системной статистики

Функция sysinfo()возвращает системную статистике. Ее единственным аргументом является указатель на структуру типа sysinfo. Перечислим наиболее интересные поля этой структуры.

uptime— время в секундах, прошедшее с момента загрузки системы;

totalram— общий объем оперативной памяти;

freeram— свободный объем ОЗУ;

procs— число процессов, работающих в системе.

Для использования функции sysinfo()требуется включить в программу файлы , и .

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

Листинг 8.12. ( sysinfo.c ) Вывод системной статистики

#include

#include

#include

#include

int main() {

/* Константы преобразования. */

const long minute = 60;

const long hour = minute * 60;

const long day = hour * 24;

const double megabyte = 1024 * 1024;

/* Получение системной статистики. */

struct sysinfo si;

sysinfo(&si);

/* Представление информации в понятном виде. */

printf("system uptime : %ld days, %ld:%02ld:%021d\n",

si.uptime / day, (si.uptime % day) / hour,

(si.uptime % hour) / minute, si.uptime % minute);

printf("total RAM : %5.1f MB\n", si.totalram / megabyte);

printf("free RAM : %5.1f MB\n",

si.freeram / megabyte);

printf("process count : %d\n", si.procs);

return 0;

}

8.15. Функция uname()

Функция uname()возвращает информацию о системе, в частности сетевое и доменное имена компьютера, а также версию операционной системы. Единственным аргументом функции является указатель на структуру типа utsname. Функция заполняет следующие поля этой структуры (все эти поля содержат текстовые строки).

sysname. Здесь содержится имя операционной системы (например, Linux).

release, version. В этих полях указываются номера версии и модификации ядра.

machine. Здесь приводится информация о платформе, на которой работает система. В случае Intel-совместимых компьютеров это будет либо i386, либо i686, в зависимости от процессора.

node. Это имя компьютера.

__domain. Это имя домена.

Функция uname()объявлена в файле .

В листинге 8.13 показана небольшая программа, которая отображает номера версии и модификации ядра Linux, а также сообщает тип платформы.

Листинг 8.15. ( print-uname.c ) Вывод информации о ядре и платформе

#include

#include

int main() {

struct utsname u;

uname(&u);

printf("%s release %s (version %s) on %s\n", u.sysname,

u.release, u.version, u.machine);

return 0;

}

Глава 9

Встроенный ассемблерный код

Сегодня лишь немногие программисты используют в своей практике язык ассемблера. Языки высокого уровня, такие как С и C++, поддерживаются практически на всех архитектурах и обеспечивают достаточно высокую производительность программ. Для тех редких случаев, когда требуется встроить в программу ассемблерные инструкции, в коллекции GNU-компиляторов (GCC) предусмотрены специальные средства, учитывающие особенности конкретной архитектуры.

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

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Программирование для Linux. Профессиональный подход» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование для Linux. Профессиональный подход»

Обсуждение, отзывы о книге «Программирование для Linux. Профессиональный подход» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x