¿Cómo se implementa / proc / self en Linux?

Estaba retocando con el sistema de files /proc en Linux, y me encontré con /proc/self , que es un enlace simbólico al directory de processs del process actual. Me gustaría saber cómo se implementa. Una solución sería cambiar ese enlace simbólico en cada cambio de context , pero obviamente es muy costoso ya que implica un acceso al disco.

Related of "¿Cómo se implementa / proc / self en Linux?"

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482 es la implementación actual.

El sistema de files proc es completamente virtual y se implementa para que el readlink VFS interno se delegue en el lugar correcto para enlaces simbólicos especiales. Por lo tanto, calcula lo que self señala cuando se lee / atraviesa, no todos los cambios de context.

Los files en /proc no se almacenan en un disco, son generados sobre la marcha por el kernel. Consulte ¿Qué sucede cuando abro y leo de / proc?

Si tiene inclinaciones programáticas, puede leer la implementación de /proc en el código fuente del kernel . El contenido del enlace simbólico /proc/self se genera mediante una function que llena un búfer con el pid del process de llamada.