Это номер инода для рассматриваемой трубы или сокета.
Канал - это однонаправленный канал с концом записи и концом чтения. В вашем примере, похоже, что FD 5 и FD 6 разговаривают друг с другом, поскольку номера инодов одинаковы. (Возможно, нет. См. Ниже.)
Более распространенным, чем наблюдение программы, говорящей с самим собой по каналу, является пара отдельных программ, взаимодействующих друг с другом, обычно потому, что вы устанавливаете канал между ними с помощью оболочки:
shell-1$ ls -lR / | less
Затем в другом окне терминала:
shell-2$ ...find the ls and less PIDs with ps; say 4242 and 4243 for this example...
shell-2$ ls -l /proc/4242/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 1 -> pipe:[222536390]
shell-2$ ls -l /proc/4243/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 0 -> pipe:[222536390]
Это говорит о том, что стандартный выход PID 4242 (FD 1, по соглашению) подключен к каналу с номером инода 222536390, и что стандартный вход PID 4243 (FD 0) подключен к той же трубе.
Все это долгий способ сказать, что ls
вывод отправляется на less
вход.
Возвращаясь к вашему примеру, FD 1 и FD 2 почти наверняка не разговаривают друг с другом. Скорее всего, это результат связывания stdout (FD 1) и stderr (FD 2) вместе, поэтому они оба отправляются в один и тот же пункт назначения. Вы можете сделать это с помощью оболочки Bourne следующим образом:
$ some-program 2>&1 | some-other-program
Таким образом, если вы заглядываете внутрь /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, вы обнаружите третий FD, подключенный к каналу с тем же номером инода, что и для FD 1 и 2 для some-program
экземпляра. Это также может быть тем, что происходит с FD 5 и 6 в вашем примере, но у меня нет готовой теории, как эти два FD были связаны вместе. Вы должны знать, что программа делает внутри, чтобы понять это.
pidgin
- у него было много трубок, розеток и прочего, поэтому был хороший пример. Последний вопрос: inode специфичны только в контексте конкретной файловой системы, верно? Например, у меня может быть инод 3 в моей/
файловой системе и другой (другой) инод 3 в моей/boot
файловой системе.