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

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

Жанры

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

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

Шрифт:

% cat /proc/version

Linux version 2.2.14-5.0 ([email protected])

(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 <stdio.h>

#include <string.h>

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

основании данных файла /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] Каталоги появляются и исчезают динамически по мере запуска и завершения процессов. В каждом каталоге имеются файлы, предоставляющие доступ к различной информации о процессе. Собственно говоря, на основании этих каталогов файловая система
/proc
и получила свое имя.

22

В некоторых UNIX-системах эти идентификаторы дополняются нулями, в Linux — нет.

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

■ 

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

■ 

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

■ 

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

■ 

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

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

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

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

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

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4