
Eu estava mexendo no /proc
sistema 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 proc
sistema de arquivos é totalmente virtual e é implementado para que o VFS interno readlink
delegue no lugar certo para links simbólicos especiais. Então, ele calcula o que self
aponta quando é lido/percorrido, e não toda troca de contexto.
Responder2
Os arquivos /proc
nã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 /proc
nocódigo fonte do kernel. O conteúdo do/proc/self
link simbólico é gerado por umfunçãoque preenche um buffer com o pid do processo de chamada.