Em suma, não, não existe.
Em muito tempo:
Existem 2 tipos de tubos no linux, pipes nomeados (aka, fifo) e pipes regulares.
Os pipes nomeados são criados com a chamada de sistema mkfifo
( man 3 mkfifo
). Os pipes nomeados existem como arquivos no sistema de arquivos. Um processo abre para leitura e outro abre para escrever.
Canais regulares são criados com a chamada de sistema pipe
( man 2 pipe
). Uma vez abertos, eles se comportam exatamente da mesma forma que abrir um tubo mkfifo. Eles pegam um descritor de arquivo, uma extremidade está aberta para leitura, a outra está aberta para escrita.
Como eles usam um descritor de arquivo, eles aparecem em /proc/PID/fd/
. Mas como eles não existem como um arquivo real em lugar algum, a entrada em /proc/PID/fd/
precisa fazer um pouco de mágica. Então basicamente o pipe é representado como symlink com um alvo falso. Quando você abre o symlink, o kernel realmente abre o pipe que é representado pelo symlink. Mas como é um link simbólico e os links simbólicos têm destinos, qualquer coisa que tente cancelar a referência ao link simbólico recuperará um alvo. É só que esse alvo não aponta para um arquivo válido.
Normalmente, você não pode fazer isso com links simbólicos, no entanto, o sistema de arquivos /proc
não é um sistema de arquivos normal. É um sistema de arquivos falso representado pelo kernel. E como o conteúdo é criado pelo kernel, o kernel pode quebrar suas próprias regras.