Esse é o número do inode para o tubo ou soquete em questão.
Um canal é um canal unidirecional, com um final de gravação e um final de leitura. No seu exemplo, parece que o FD 5 e o FD 6 estão conversando entre si, pois os números dos inodes são os mesmos. (Talvez não, no entanto. Veja abaixo.)
Mais comum do que ver um programa conversando consigo mesmo através de um canal é um par de programas separados conversando entre si, normalmente porque você configura um canal entre eles com um shell:
shell-1$ ls -lR / | less
Em outra janela do terminal:
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]
Isso indica que a saída padrão do PID 4242 (FD 1, por convenção) está conectada a um tubo com número de inodo 222536390, e que a entrada padrão do PID 4243 (FD 0) está conectada ao mesmo tubo.
Tudo isso é um longo caminho para dizer que ls
a saída está sendo enviada para less
a entrada da.
Voltando ao seu exemplo, o FD 1 e o FD 2 quase certamente não estão se falando. Provavelmente, este é o resultado de vincular stdout (FD 1) e stderr (FD 2) juntos, para que ambos vão para o mesmo destino. Você pode fazer isso com um shell Bourne como este:
$ some-program 2>&1 | some-other-program
Portanto, se você bisbilhotasse /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
, encontraria um terceiro FD anexado a um tubo com o mesmo número de inode que é anexado aos FDs 1 e 2 da some-program
instância. Também pode ser o que está acontecendo com os FDs 5 e 6 no seu exemplo, mas não tenho uma teoria pronta sobre como esses dois FDs se uniram. Você precisaria saber o que o programa está fazendo internamente para descobrir isso.
pidgin
- tinha muitos canos e tomadas e outras coisas, então era um bom exemplo. Uma última pergunta: os inodes são específicos apenas no contexto de um sistema de arquivos específico, correto? Como em, eu poderia ter o inode 3 no meu/
sistema de arquivos e outro (diferente) inode 3 no meu/boot
sistema de arquivos.