Em geral, para encontrar o que está na outra extremidade de um soquete, é necessário iterar em /proc
. Isso pode significar deixar uma ferramenta existente como netstat
, lsof
ou ss
fazer isso para você.
A razão para isto é que um socket pode ser aberto por diferentes processos. Depois que um processo abre um soquete, ele pode se separar e os filhos podem alterar seus privilégios e mudar para diferentes namespaces. Também é possível passar descritores de arquivo de um processo para um processo não relacionado, usando dados anciliares em um soquete unix. Portanto, processos arbitrários podem ter o mesmo soquete aberto. Não existe tal coisa como “o PID de um soquete”, apenas “os PIDs de um soquete”.
Embora isso não prove que não há como enumerar os PIDs fornecidos pelo soquete, seria muito difícil projetar uma interface desse tipo, especialmente quando você considera que os usuários não-root não sabem quando os arquivos são aberto por processos executados como um usuário diferente. O acesso por meio do /proc
impõe segurança por meio de permissões e não conheço nenhuma outra interface para obter os mesmos dados. Além disso, fuser
, lsof
, netstat
e ss
all enumeram /proc
; se houvesse outra interface, eu esperaria que alguém a usasse. Então, tenho certeza que não há outro jeito.