Como o / proc / self é implementado no Linux?

19

Eu estava mexendo no /procsistema de arquivos no Linux e me deparei com isso /proc/self, que é um link simbólico para o diretório de processos do processo atual. Eu gostaria de saber como é implementado. Uma solução seria alterar esse link simbólico em todas as alternâncias de contexto , mas isso é obviamente muito caro, pois envolve acesso ao disco.

Vicky Chijwani
fonte

Respostas:

20

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482 é a implementação atual.

O procsistema de arquivos é totalmente virtual e é implementado para que o VFS interno readlinkdelegue para o local certo para links simbólicos especiais. Assim, calcula para que selfpontos quando é lido / percorrido, nem todas as alternâncias de contexto.

Daniel Pittman
fonte
12

Os arquivos /procnão são armazenados em um disco, eles são gerados rapidamente pelo kernel. Consulte O que acontece quando abro e leio em / proc?

Se você é programaticamente inclinado, pode ler a implementação /procno código fonte do kernel . O conteúdo do /proc/selflink simbólico é gerado por uma função que preenche um buffer com o pid do processo de chamada.

Gilles 'SO- parar de ser mau'
fonte