Você pode ver o canal em /proc/$PID/fd . O descritor é um link simbólico para algo como pipe:[188528098] . Com essa informação, você pode procurar pelo outro processo:
$ lsof -n | grep -w 188528098
sleep 1565 hl 1w FIFO 0,12 0t0 188528098 pipe
sleep 1566 hl 0r FIFO 0,12 0t0 188528098 pipe
Ou, se você quiser ter certeza (para processamento automático), que o número é o soquete e não parte de um nome de arquivo:
$ lsof -n | awk 'NF==9 && $5=="FIFO" && $9=="pipe" && $8==188528098'
Com lsof 4,88 e acima, você também pode usar os sinalizadores -E ou +E :
Em combinação com -p <pid> , -d <descriptor> , você pode obter as informações do endpoint para um descritor específico de um dado pid .
$ sleep 1 | sh -c 'lsof -E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sh 27176 chazelas 0r FIFO 0,10 0t0 2609460 pipe 27175,sleep,1w
Acima nos informando que fd 0 de sh é um canal com fd 1 de sleep na outra ponta. Se você alterar -E para +E , também obterá todas as informações para esse fd de sleep :
$ sleep 1 | sh -c 'lsof +E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 27066 chazelas 1w FIFO 0,10 0t0 2586272 pipe 27067,sh,0r 27068,lsof,0r
sh 27067 chazelas 0r FIFO 0,10 0t0 2586272 pipe 27066,sleep,1w
(veja como lsof também tem o pipe em sua stdin)