Dies ist die Inode- Nummer für das betreffende Rohr oder die betreffende Muffe.
Eine Pipe ist ein unidirektionaler Kanal mit einem Schreibende und einem Leseende. In Ihrem Beispiel sieht es so aus, als würden FD 5 und FD 6 miteinander sprechen, da die Inode-Nummern gleich sind. (Vielleicht aber nicht. Siehe unten.)
Häufiger als ein Programm zu sehen, das über eine Pipe mit sich selbst kommuniziert, sind zwei separate Programme, die miteinander kommunizieren. Dies liegt normalerweise daran, dass Sie eine Pipe mit einer Shell zwischen ihnen einrichten:
shell-1$ ls -lR / | less
Dann in einem anderen Terminalfenster:
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]
Dies besagt, dass der Standardausgang von PID 4242 (FD 1, gemäß Konvention) mit einer Leitung mit der Inode-Nummer 222536390 verbunden ist und dass der Standardeingang von PID 4243 (FD 0) mit derselben Leitung verbunden ist.
All dies ist ein langer Weg zu sagen, dass ls
die Ausgabe an less
die Eingabe gesendet wird .
Zurück zu Ihrem Beispiel: FD 1 und FD 2 sprechen mit ziemlicher Sicherheit nicht miteinander. Dies ist höchstwahrscheinlich das Ergebnis der Verknüpfung von stdout (FD 1) und stderr (FD 2), sodass beide zum gleichen Ziel gelangen. Sie können dies mit einer Bourne-Shell wie folgt tun:
$ some-program 2>&1 | some-other-program
Wenn Sie sich also umsehen /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, finden Sie ein drittes FD, das an eine Pipe mit derselben Inode-Nummer angehängt ist, die für die some-program
Instanz an FDs 1 und 2 angehängt ist . Dies mag auch das sein, was in Ihrem Beispiel mit den FDs 5 und 6 passiert, aber ich habe keine fertige Theorie, wie diese beiden FDs miteinander verbunden wurden. Sie müssen wissen, was das Programm intern tut, um das herauszufinden.
pidgin
- es hatte eine Menge Rohre und Steckdosen und anderes Zeug, also war es ein schönes Beispiel. Eine letzte Frage: Inodes sind nur im Kontext eines bestimmten Dateisystems spezifisch, richtig? Wie in könnte ich Inode 3 in meinem/
Dateisystem und einen anderen (anderen) Inode 3 in meinem/boot
Dateisystem haben.