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

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

Жанры

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

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

Шрифт:

% 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 <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. "Исполняемый файл процесса".

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

Я снова царь. Книга XXXIII

Дрейк Сириус
33. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова царь. Книга XXXIII

Я С СССР! Том III

Вязовский Алексей
3. Я спас СССР
Фантастика:
альтернативная история
5.86
рейтинг книги
Я С СССР! Том III

Deus vult

Рокотов Алексей
3. Путь князя
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Deus vult

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Одержимая (авторский сборник)

Дяченко Марина и Сергей
Фантастика:
фэнтези
научная фантастика
7.80
рейтинг книги
Одержимая (авторский сборник)

Воин-Врач

Дмитриев Олег
1. Воин-Врач
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
6.00
рейтинг книги
Воин-Врач

История США от глубокой древности до 1918 года

Азимов Айзек
Популярная наука от Азимова
Научно-образовательная:
история
5.00
рейтинг книги
История США от глубокой древности до 1918 года

Законник Российской Империи. Том 2

Ткачев Андрей Юрьевич
2. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
6.40
рейтинг книги
Законник Российской Империи. Том 2

Господин из завтра. Тетралогия.

Махров Алексей
Фантастика:
альтернативная история
8.32
рейтинг книги
Господин из завтра. Тетралогия.

Меткий стрелок

Вязовский Алексей
1. Меткий стрелок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Меткий стрелок

Родословная. Том 1

Ткачев Андрей Юрьевич
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Родословная. Том 1

Солдат Империи

Земляной Андрей Борисович
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Солдат Империи

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I