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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Например, если в системе имеется IDE-дисковод CD-ROM, подключенный в качестве главного устройства к дополнительному IDE-контроллеру, соответствующий файл устройства будет называться /dev/hdc. Тогда компакт-диск извлекается из дисковода с помощью такой команды:

% ./cdrom-eject /dev/hdc

Глава 7

Файловая система /proc

Попробуйте запустить команду mountбез аргументов — она выдаст список файловых систем, смонтированных в настоящий момент. Среди прочих строк будет и такая:

none on /proc type proc (rw)

Она указывает на специальную файловую систему /proc. Поле noneговорит о том, что эта система не связана с аппаратным устройством, например жестким диском. Она является своего рода "окном" в ядро Linux. Файлам в системе /procне соответствуют реальные файлы на физическом устройстве. Это особые объекты, которые ведут себя подобно файлам, открывал доступ к параметрам, служебным структурам и статистической информации ядра. "Содержимое" таких файлов генерируется ядром динамически в процессе чтения из файла. Осуществляя запись в некоторые файлы, можно менять конфигурацию работающего ядра системы. Рассмотрим пример:

% ls -l /proc/version

-r--r--r-- 1 root root 0 Jan 17 18:09 /proc/version

Обратите внимание на то, что размер файла равен нулю. Поскольку содержимое файла создается ядром "на лету", понятие размера файла здесь неприменимо. Соответственно время модификации файла равно времени запуска команды.

Что находится в файле /proc/version? Он содержит строку, описывающую номер версии ядра Linux. Сюда входит информация, возвращаемая системным вызовом uname()(описан в разделе 8.15, "Функция uname()"), а также номер версии компилятора, с помощью которого было создано ядро. Чтение из файла /proc/versionосуществляется самым обычным образом, например с помощью команды cat:

% cat /proc/version

Linux version 2.2.14-5.0 (root@porky.devel.redhat.com)

(gcc version egcs-2.91.66 19990314/Linux

(egcs-1.1.2 release)) #1 Tue Mar 7 21:07:39 EST 2000

Многие элементы файловой системы /procописаны на man-странице proc(раздел 5). В этой главе будут рассмотрены те из них, которые чаще всего используются программистами и полезны при отладке.

Читатели, которых интересуют детали функционирования файловой системы /proc, могут просмотреть ее исходные коды в каталоге /usr/src/linux/fs/proc/.

7.1. Извлечение информации из файловой системы /proc

Большинство элементов файловой системы /procвыдает информацию в отформатированном виде. Например, файл /proc/cpuinfoсодержит сведения о процессоре (или процессорах, если это многопроцессорный компьютер). Выходная информация представляется в виде таблицы значений, по одному на строку. Каждое значение сопровождается символическим идентификатором.

При обращении к файлу /proc/cpuinfoбудет выдана примерно следующая информация:

% cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 5

model name : Pentium II (Deschutes)

stepping : 2

cpu MHz : 400.913520

cache size : 512 KB

fdiv_bug : no

hlt_bug : no

sep_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 2

wp : yes

flags : fpu vme de pse tsc msr рае mce cx8 apic sep

mtrr pge mce cmov pat pse36 mmx fxsr

bogomips : 399.77

Интерпретация некоторых значений даны в разделе 7.3.1. "Центральный процессор". Если нужно получить одно из этих значений в программе, проще всего загрузить файл в память и просканировать его функцией sscanf(). В листинге 7.1 показано, как это сделать. В программе имеется функция get_cpu_clock_speed(), которая загружает файл /proc/cpuinfoи определят частоту процессора.

Листинг 7.1. ( clock-speed.c ) Определение частоты процессора путем анализа файла /proc/cpuinfo

#include

#include

/* Определение частоты процессора в мегагерцах на

основании данных файла /proc/cpuinfo. В

многопроцессорной системе будет найдена частота

первого процессора. В случае ошибки возвращается нуль. */

float get_cpu_clock_speed() {

FILE* fр;

char buffer[1024];

size_t bytes_read;

char* match;

float clock_speed;

/* Загрузка всего файла /proc/cpuinfo в буфер. */

fp = fopen("/proc/cpuinfo", "r");

bytes_read = fread(buffer, 1, sizeof(buffer), fp);

fclose(fp);

/* Выход, если прочитать файл не удалось или буфер оказался

слишком маленьким. */

if (bytes_read == 0 || bytes_read = sizeof(buffer))

return 0;

/* Буфер завершается нулевым символом. */

buffer[bytes_read] = '\0';

/* Поиск строки, содержащей метку "cpu MHz". */

match = strstr(buffer, "cpu MHz");

if (match == NULL)

return 0;

/* Анализ строки и выделение из нее значения частоты

процессора. */

sscanf(match, "cpu MHz ; %f" &clock_speed);

return clock_speed;

}

int main() {

printf("CPU clock speed: %4.0f Mhz\n",

get_cpu_clock_speed());

return 0;

}

He забывайте о том. что имена, семантика и формат представления элементов файловой системы /procменяются при обновлении ядра Linux. Программа должна вести себя корректно в случае, если нужный файл отсутствует или имеет иной формат.

7.2. Каталоги процессов

Файловая система /procсодержит по одному каталогу для каждого выполняющегося в данный момент процесса. Именем каталога является идентификатор процесса. [22] В некоторых UNIX-системах эти идентификаторы дополняются нулями, в Linux — нет. Каталоги появляются и исчезают динамически по мере запуска и завершения процессов. В каждом каталоге имеются файлы, предоставляющие доступ к различной информации о процессе. Собственно говоря, на основании этих каталогов файловая система /procи получила свое имя.

В каталогах процессов находятся следующие файлы.

cmdline. Содержит список аргументов процесса; описан в разделе 7.2.2, "Список аргументов процесса".

cwd. Является символической ссылкой на текущий рабочий каталог процесса (задаётся, к примеру, функцией chdir()).

environ. Содержит переменные среды процесса; описан в разделе 7.2.3, "Переменные среды процесса".

exe. Является символической ссылкой на исполняемый файл процесса; описан в разделе 7.2.4. "Исполняемый файл процесса".

fd. Является подкаталогом, в котором содержатся ссылки на файлы, открытые процессом: описан в разделе 7.2.5, "Дескрипторы файлов процесса".

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

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

Интервал:

Закладка:

Сделать


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

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




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


Отзывы читателей о книге Программирование для Linux. Профессиональный подход, автор: Марк Митчелл. Читайте комментарии и мнения людей о произведении.


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

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