Це номер inode для труби або розетки, про яку йдеться.
Труба - це односпрямований канал, що має кінець запису та читання. У вашому прикладі схоже, що FD 5 і FD 6 розмовляють один з одним, оскільки номери inode однакові. (Можливо, ні. Хоча див. Нижче.)
Більш поширеним, ніж бачити програму, що розмовляє сама по трубі, - це пара окремих програм, що розмовляють між собою, як правило, тому, що ви встановлюєте трубу між ними разом із оболонкою:
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, за умовами) підключений до труби з номером inode 222536390, а стандартний вхід PID 4243 (FD 0) підключений до тієї ж труби.
Все це - довгий шлях сказати, що ls
вихідний сигнал надсилається на less
вхід.
Повертаючись до вашого прикладу, FD 1 і FD 2 майже напевно не розмовляють між собою. Швидше за все, це результат поєднання stdout (FD 1) та stderr (FD 2) разом, тому вони обидва їдуть до одного пункту призначення. Ви можете зробити це з оболонкою Борна так:
$ some-program 2>&1 | some-other-program
Отже, якщо ви засунулися /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, ви знайдете третій FD, приєднаний до труби з тим самим номером inode, який приєднаний до FD 1 і 2 для some-program
прикладу. Це також може статися з FD 5 та 6 у вашому прикладі, але я не маю готової теорії, як ці два FD пов'язані між собою. Ви повинні знати, що програма робить всередині, щоб зрозуміти це.
pidgin
- у ньому було багато труб та розеток та іншого, тому це був приємний приклад. Останнє питання: узори конкретні лише у контексті певної файлової системи, правильно? Як і в, я міг мати в своїй/
файловій системі inode 3 , а іншу (інший) - в моїй/boot
файловій системі.