사용자 프로세스가 실행 파일 자체와 공유 라이브러리에 대한 파일 설명자를 예약합니까? 예를 들어, /proc/PID/fd
// 외에도 bash
최소한 다음이 표시될 것으로 예상됩니다.fd
stdin
stdout
stderr
- 하나를 위해
/usr/bin/bash
- 문서용
/usr/lib/XXX/libc-2.XX.so
사본 1부.
커널 기능에 따르면load_elf_binary
fd
, 적어도 a 가 실행 파일에 할당된 경우 인 것 같습니다 .
그러나 실제로 폴더에는 그러한 fd
항목이 없습니다 /proc/PID/fd
. 아마도 존재하지 않기 때문일 것입니다 task_struct->files->fd_array
. 따라서 질문은 다음과 같습니다.
- 커널은
file
프로세스별 구조(예: / )에서task_struct
실행 파일 및 공유 라이브러리에 해당하는 개체에 대한 포인터를 저장 합니까thread_info
? - 그렇다면 어떤 구조일까요?
답변1
아니요, 일반적으로 이러한 항목에 대한 파일 설명자가 없습니다. 그러나 /proc/PID/exe
실행 중인 바이너리가 표시 되고 매핑된 항목이 어디에 있는지도 표시 /proc/PID/maps
됩니다 . /proc/PID/map_files/
그리고 이것이 존재하지 않더라도 커널은 이를 계속 추적할 수 있습니다. 커널 메모리의 모든 것이 /proc
.