
저는 Linux에서 파일 시스템을 만지작거리고 있었는데 , 현재 프로세스의 프로세스 디렉터리에 대한 심볼릭 링크인 를 /proc
발견했습니다 . /proc/self
어떻게 구현되는지 알고 싶습니다. 한 가지 해결책은 해당 심볼릭 링크를 변경하는 것입니다.모든 컨텍스트 전환, 그러나 디스크 액세스가 포함되므로 분명히 비용이 많이 듭니다.
답변1
http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482현재 구현입니다.
파일 proc
시스템은 완전히 가상이며 내부 VFS가 readlink
특수 심볼릭 링크를 위한 올바른 위치로 위임되도록 구현됩니다. 따라서 self
모든 컨텍스트 전환이 아닌 읽기/트래버스 시점을 계산합니다.
답변2
파일은 /proc
디스크에 저장되지 않으며 커널에 의해 즉시 생성됩니다. 보다/proc를 열고 읽으면 어떻게 되나요?
/proc
프로그래밍에 관심이 있는 경우 다음에서 구현을 읽을 수 있습니다.커널 소스 코드. 내용은/proc/self
심볼릭 링크는 다음에 의해 생성됩니다.기능호출 프로세스의 pid로 버퍼를 채웁니다.