LINUX.ORG.RU

История изменений

Исправление Rootlexx, (текущая версия) :

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

С какой целью интересуетесь? Тяжело внятно объяснить, не ударившись в программирование.

Сотни файлов типа dir, reg, chr, fifo, unix, a_inode. Что это такое?

Это разные типы. dir - понятно, каталог, reg - regular file (обычный файл), a_inode - анонимный (т.е. без соответствующего ему файла на диске) inode, и т.д. Кроме первых двух это уже «внутренности» системы.

Там всякие cwd, rtd, mem, del, txt… а ближе к концу вида «0r, 1w, 2w, 3r…26u…» и т.д. Что это означает?

cwd - это current working directory (текущий каталог), rtd - корневой, mem - это файлы, отображённые в память (см. mmap), и т.д. См. man lsof.

<число><r|w|u> (например, «0r», «1w», «26u») - это как раз то, что вас интересует. Число - дескриптор, символ - режим, в котором открыт файл: на чтение, на запись или оба.

Еще интересно что значат числа вроде «253,1» и «0,12» в графе device.

Устройства в Linux однозначно идентифицируются парой чисел major-minor. Если упрощённо, то первое - это тип устройства, а второе - его индекс. Т.е. пара 253,1 означает «устройство типа 253 номер 1».

Неужели, чтобы плеер запустил простое видео, нужно действительно открыть сотни этих файлов?

Плеер - это довольно сложная программа, которой нужно взаимодействовать как с самой собой (между разными её компонентами), так и со средой, в которой она работает: графическая система, менеджер сессии (чтобы экран не гасился во время воспроизведения) и т.д. Чтобы не плодить 100500 специфических способов общения на каждый частный случай, всё строится поверх существующего файлового и сетевого API - отсюда и множество открытых файлов.

Исходная версия Rootlexx, :

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

С какой целью интересуетесь? Тяжело внятно объяснить, не ударившись в программирование.

Сотни файлов типа dir, reg, chr, fifo, unix, a_inode. Что это такое?

Это разные типы. dir - понятно, каталог, reg - regular file (обычный файл), a_inode - анонимный (т.е. без соответствующего ему файла на диске) inode, и т.д. Кроме первых двух это уже «внутренности» системы.

Там всякие cwd, rtd, mem, del, txt… а ближе к концу вида «0r, 1w, 2w, 3r…26u…» и т.д. Что это означает?

cwd - это current working directory (текущий каталог), rtd - корневой, mem - это файлы, отображённые в память (см. mmap), и т.д. См. man lsof.

<число><r|w|u> (например, «0r», «1w», «26u») - это как раз то, что вас интересует. Число - дескриптор, символ - режим, в котором открыт файл: на чтение, на запись или оба.

Еще интересно что значат числа вроде «253,1» и «0,12» в графе device.

Устройства в Linux однозначно идентифицируются парой чисел major-minor. Если упрощённо, то первое - это тип устройства, а второе - его индекс. Т.е. пара 253,1 означает «устройство типа 253 номер 1».

Неужели, чтобы плеер запустил простое видео, нужно действительно открыть сотни этих файлов?

Плеер - это довольно сложная программа, которой нужно взаимодействовать как с самой собой (между разными её компонентами), так и со средой, в которой она работает: графическая система, менеджер сессии (чтобы экран не гасился во время воспроизведения) и т.д. Чтобы не плодить 100500 специфических способов общения на каждый частный случай, всё строится поверх существующего файлового и сетевого API - отсюда и множество открытых файловых дескрипторов..