Söz konusu boru veya soketin inode numarası.
Bir boru, bir yazma ucu ve bir okuma ucu ile tek yönlü bir kanaldır. Örnekte, FD 5 ve FD 6 birbirleriyle konuşuyor gibi görünüyor, çünkü inode sayıları aynı. (Belki olmasa da. Aşağıya bakınız.)
Bir programın kendisiyle bir boru üzerinde konuştuğunu görmekten daha yaygın olanı, birbirleriyle konuşan bir çift ayrı programdır, çünkü genellikle bir kabuk ile aralarında bir boru kurdunuz:
shell-1$ ls -lR / | less
Sonra başka bir terminal penceresinde:
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]
Bu, PID 4242'nin standart çıktısının (konvansiyonel olarak FD 1) 222536390 numaralı inode'lu bir boruya bağlandığını ve PID 4243'ün standart girişinin (FD 0) aynı boruya bağlandığını söylüyor.
Bunların hepsi, ls
çıktısının less
girişine gönderildiğini söylemenin uzun bir yoludur .
Senin örneğe geri alma, FD 1 ve FD 2 neredeyse kesin olan değil birbirleriyle konuşurlar. Büyük olasılıkla bu, birlikte stdout (FD 1) ve stderr (FD 2) bağlamanın sonucudur, bu yüzden ikisi de aynı hedefe gider. Böyle bir Bourne kabuğu ile yapabilirsiniz:
$ some-program 2>&1 | some-other-program
Böylece, etrafa /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
girerseniz, some-program
örnek için FD 1 ve 2'ye eklenmiş aynı inode numarasına sahip bir boruya bağlı üçüncü bir FD bulacaksınız . Örnekte 5 ve 6 numaralı FD'lerde olan şey de olabilir, ancak bu iki FD'nin nasıl birbirine bağlandığı konusunda hiçbir teorim yok. Bunu anlamak için programın dahili olarak ne yaptığını bilmek zorundasınız.
pidgin
- çok fazla boru ve soket vardı ve başka şeyler de vardı, bu yüzden güzel bir örnek oldu. Son bir soru: inode sadece belirli bir dosya sistemi bağlamında özeldir, doğru mu? Olduğu gibi,/
dosya sistemimde 3, başka bir (farklı)/boot
dosya sistemimde de 3 olabilirdi .