Não acredito que exista outra forma, /proc/net/* e /proc/*/fd/ parecem ser o que lsof e netstat -p lêem. Ter um mapeamento exclusivo de soquetes (ou portas tcp) para processos também seria impossível, já que vários processos podem ter cópias do mesmo soquete. netstat -p parece mostrar apenas um deles, lsof , claro, lista todos. Além disso, como você está começando de um pacote, ele pode não ter um soquete de origem: ele pode vir de fora do sistema ou de um soquete bruto / de pacote