proc_pid_fdinfo(5)

НАИМЕНОВАНИЕ
/proc/pid/fdinfo/ - information about file descriptors

ОПИСАНИЕ
Этот подкаталог содержит один элемент на каждый файл, который открыл процесс, именем файла будет номер его файлового дескриптора. Файлы в этом каталоге доступны на чтение только владельцу процесса. Содержимое каждого файла может быть прочитано для получения информации о соответствующем файловом дескрипторе. Содержимое зависит от типа файла, на который ссылается соответствующий файловый дескриптор.

Для обычных файлов и каталогов содержимым будет, что-то типа:

    $ cat /proc/12015/fdinfo/4
    pos:    1000
    flags:  01002002
    mnt_id: 21

Поля:

pos Это десятичное число отражает смещение файла.

flags
    Это восьмеричное число отражает режим доступа к файлу и флаги состояния файла (смотрите open(2)). Если установлен флаг файлового дескриптора close-on-exec, то flags также содержат значение O_CLOEXEC.

    До Linux 3.1 в этом поле некорректно показывалось значение O_CLOEXEC верное на момент открытия файла, а не текущее значение флага close-on-exec.

mnt_id
    This field, present since Linux 3.15, is the ID of the mount containing this file. See the description of /proc/pid/mountinfo.

Для файловых дескрипторов eventfd (смотрите eventfd(2)) мы увидим (начиная с Linux 3.8) следующие поля:

    pos:	0
    flags:	02
    mnt_id:	10
    eventfd-count:               40

В eventfd-count содержится текущее значение счётчика eventfd counter (в виде шестнадцатеричного числа).

Для файловых дескрипторов epoll (смотрите epoll(7)) мы увидим (начиная с Linux 3.8) следующие поля:

    pos:	0
    flags:	02
    mnt_id:	10
    tfd:        9 events:       19 data: 74253d2500000009
    tfd:        7 events:       19 data: 74253d2500000007

Каждая строка, начинающаяся с tfd, описывает один из файловых дескрипторов, который отслеживается через файловый дескриптор epoll (подробности смотрите в epoll_ctl(2)). Поле tfd содержит номер файлового дескриптора. Поле events представляет собой шестнадцатеричную маску событий, которые отслеживаются для этого файлового дескриптора. Поле data содержит данные, связанные с этим файловым дескриптором.

Для файловых дескрипторов signalfd (смотрите signalfd(2)) мы увидим (начиная с Linux 3.8) следующие поля:

    pos:	0
    flags:	02
    mnt_id:	10
    sigmask:	0000000000000006

В sigmask содержится шестнадцатеричная маска сигналов, которые принимаются через этот файловый дескриптор signalfd (в этом примере биты 2 и 3 установлены, что соответствует сигналам SIGINT и SIGQUIT; смотрите signal(7)).

Для файловых дескрипторов inotify (смотрите inotify(7)) мы увидим (начиная с Linux 3.8) следующие поля:

    pos:	0
    flags:	00
    mnt_id:	11
    inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
    inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73

Каждая из строк, начинающаяся с «inotify», содержит информацию об одном отслеживаемом файле или каталоге. Поля в этой строке:

wd  Отслеживаемый номер файлового дескриптора (десятичное число).

ino Номер иноды целевого файла (шестнадцатеричное число).

sdev
    Идентификатор устройства, содержащего целевой файл (шестнадцатеричное число).

mask
    Маска отслеживаемых событий для целевого файла (шестнадцатеричное число).

Если ядро собрано с поддержкой exportfs, то путь целевого файла представляется в виде описателя (handle) файла, выраженного тремя шестнадцатеричными полями: fhandle-bytes, fhandle-type и f_handle.

Для файловых дескрипторов fanotify (смотрите fanotify(7)) мы увидим (начиная с Linux 3.8) следующие поля:

    pos:	0
    flags:	02
    mnt_id:	11
    fanotify flags:0 event-flags:88002
    fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73

В четвёртой строке содержится информация, определяющая когда была создана с помощью fanotify_init(2) группа fanotify:

flags
    Аргумент flags, переданный fanotify_init(2) (шестнадцатеричное число).

event-flags
    Аргумент event_f_flags, переданный fanotify_init(2) (шестнадцатеричное число).

В каждой дополнительной строке файла содержится информация об одной из меток в группе fanotify. Большинство полей аналогичны с inotify, за исключением:

mflags
    Флаги, связанные с меткой (шестнадцатеричное число).

mask
    Маска событий, связанная с этой меткой (шестнадцатеричное число).

ignored_mask
    Маска событий, которые игнорируются для этой метки (шестнадцатеричное число).

Подробную информацию об этих полях смотрите в fanotify_mark(2).

Для файловых дескрипторов timerfd (смотрите timerfd(2)) мы увидим (начиная с Linux 3.17) следующие поля:

    pos:    0
    flags:  02004002
    mnt_id: 13
    clockid: 0
    ticks: 0
    settime flags: 03
    it_value: (7695568592, 640020877)
    it_interval: (0, 0)

clockid
    Числовое значение идентификатора часов (соответствует одной из констант CLOCK_*, определённых в <time.h>), используемое для отметки действия таймера (в этом примере 0 — CLOCK_REALTIME).

ticks
    Количество раз прошедших окончаний таймера (т. е., значение, которое вернул бы для него вызов read(2)).

settime flags
    В этом поле перечислены флаги в восьмеричном виде (в этом примере установлены TFD_TIMER_ABSTIMEи TFD_TIMER_CANCEL_ON_SET), с которым был запущен timerfd последний раз (смотрите timerfd_settime(2)).

it_value
    В этом поле содержит количество времени до следующего истечения таймера, выраженное в секундах и наносекундах. Это всегда относительное значение, независимо от флага создания таймера TFD_TIMER_ABSTIME.

it_interval
    В этом поле содержится интервал таймера, выраженный в секундах и наносекундах (поля it_value и it_interval содержат значения, которые вернул бы вызов timerfd_gettime(2) для этого файлового дескриптора).

ИСТОРИЯ
Linux 2.6.22.

СМОТРИТЕ ТАКЖЕ
proc(5)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).