이라고 불렀습니다. 그래서 공유 라이브러리에 대해 공부하고 있었고 암시 적으로 dlclose()
이 프로세스 종료시 수행된다는 내용을 읽었습니다. 누가이 통화에 책임이 있는지 알고 싶습니다.dlclose는 암시 적으로
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
을 내가 ldd ./a.out
을했다면 그 다음 나는 이러한 라이브러리의 목록을 얻을 : 예를 들어, 내가 쓴
linux-vdso.so.1 => (0x00007ffd6675c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2569866000)
/lib64/ld-linux-x86-64.so.2 (0x0000562b69162000)
링커는 이러한 권리를로드 할 책임이있다, 그래서 종결시의 책임이있는 사람 이 ./a.out
이 라이브러리의 암시 적 dlclose()
에 대해 실행 가능합니까?
이것은 실수 여야합니다. 프로세스 종료시'dlclose'가 호출되지 않습니다. –
정말입니까? Michael Kerrisk의 The Linux Programming Interface는 시스템 프로그래밍에 관한 책으로 잘 알려져 있기 때문에 책에 '모든 라이브러리의 암시적인 dlclose()가 프로세스 종료시 수행됩니다.'라고 명시되어 있습니다. –
프로세스가 종료되면 , 열려있는 모든 파일 핸들이 자동으로 닫힙니다. DL은 단지 열린 파일이기 때문에 이것도 닫힌다는 것을 의미합니다. – Barmar