Como /proc/self é implementado no Linux?

Como /proc/self é implementado no Linux?

Eu estava mexendo no /procsistema de arquivos do Linux e me deparei com /proc/self, que é um link simbólico para o diretório do processo atual. Gostaria de saber como isso é implementado. Uma solução seria mudar esse link simbólico emcada mudança de contexto, mas isso é obviamente muito caro, pois envolve acesso ao disco.

Responder1

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 no lugar certo para links simbólicos especiais. Então, ele calcula o que selfaponta quando é lido/percorrido, e não toda troca de contexto.

Responder2

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

Se você tiver inclinação para programação, poderá ler a implementação de /procnocódigo fonte do kernel. O conteúdo do/proc/selflink simbólico é gerado por umfunçãoque preenche um buffer com o pid do processo de chamada.

informação relacionada