Jest to numer i- węzła dla danej rury lub gniazda.
Potok jest kanałem jednokierunkowym z końcem zapisu i końcem odczytu. W twoim przykładzie wygląda na to, że FD 5 i FD 6 rozmawiają ze sobą, ponieważ numery i-węzłów są takie same. (Może jednak nie. Zobacz poniżej.)
Bardziej powszechne niż oglądanie programu rozmawiającego z sobą przez potok jest para oddzielnych programów rozmawiających ze sobą, zwykle dlatego, że konfigurujesz potok między nimi za pomocą powłoki:
shell-1$ ls -lR / | less
Następnie w innym oknie terminala:
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]
Oznacza to, że standardowe wyjście PID 4242 (FD 1, zgodnie z konwencją) jest podłączone do rury o numerze i-węzła 222536390, a standardowe wejście PID 4243 (FD 0) jest podłączone do tej samej rury.
Wszystko to stanowi długą drogę do stwierdzenia, że ls
dane wyjściowe są wysyłane do less
danych wejściowych.
Wracając do twojego przykładu, FD 1 i FD 2 prawie na pewno nie rozmawiają ze sobą. Najprawdopodobniej jest to wynik połączenia stdout (FD 1) i stderr (FD 2), więc obaj idą do tego samego miejsca docelowego. Możesz to zrobić za pomocą takiej powłoki Bourne'a:
$ some-program 2>&1 | some-other-program
Tak więc, jeśli zajrzysz do środka /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, znajdziesz trzecią FD dołączoną do rury o takim samym numerze i-węzła, jak dla FD 1 i 2 dla some-program
instancji. Być może tak dzieje się w przypadku twojego FD 5 i 6, ale nie mam gotowej teorii, w jaki sposób te dwa FD zostały ze sobą powiązane. Musisz dowiedzieć się, co program robi wewnętrznie, aby to zrozumieć.
pidgin
- miał wiele rur i gniazd i innych rzeczy, więc był to dobry przykład. Ostatnie pytanie: i-węzły są specyficzne tylko w kontekście konkretnego systemu plików, prawda? W tej chwili mógłbym mieć i-węzeł 3 w moim/
systemie plików, a inny (inny) i-węzeł 3 w moim/boot
systemie plików.