Questo è il numero di inode per la pipe o il socket in questione.
Una pipe è un canale unidirezionale, con una fine di scrittura e una fine di lettura. Nel tuo esempio, sembra che FD 5 e FD 6 stiano parlando tra loro, poiché i numeri di inode sono gli stessi. (Forse no, comunque. Vedi sotto.)
Più comune di vedere un programma parlare da solo su una pipe è una coppia di programmi separati che parlano tra loro, in genere perché si imposta una pipe tra loro con una shell:
shell-1$ ls -lR / | less
Quindi in un'altra finestra del terminale:
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]
Ciò afferma che l'uscita standard del PID 4242 (FD 1, per convenzione) è collegata a un tubo con numero di inode 222536390 e che l'ingresso standard del PID 4243 (FD 0) è collegato allo stesso tubo.
Tutto ciò è un lungo modo di dire che ls
l'output viene inviato aless
all'input.
Tornando al tuo esempio, FD 1 e FD 2 quasi sicuramente non parlano tra loro. Molto probabilmente questo è il risultato di legare insieme stdout (FD 1) e stderr (FD 2), quindi entrambi vanno nella stessa destinazione. Puoi farlo con una shell Bourne come questa:
$ some-program 2>&1 | some-other-program
Quindi, se ti guardassi dentro /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, troverai un terzo FD collegato a una pipe con lo stesso numero di inode collegato agli FD 1 e 2 per l' some-program
istanza. Questo potrebbe anche essere ciò che sta accadendo con gli FD 5 e 6 nel tuo esempio, ma non ho una teoria pronta su come questi due FD siano stati uniti. Dovresti sapere cosa sta facendo il programma internamente per capirlo.
pidgin
: aveva un sacco di tubi e prese e altre cose, quindi è stato un buon esempio. Un'ultima domanda: gli inode sono specifici solo nel contesto di un particolare filesystem, giusto? Come in, avrei potuto avere l'inode 3 sul mio/
filesystem e un altro (diverso) inode 3 sul mio/boot
filesystem.