私は共有ライブラリについて勉強していましたが、暗黙的に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'は呼び出されません。 –
本当ですか?私はマイケル・ケリスクのThe Linux Programming Interfaceから勉強しているので、システムプログラミングのための定評のある本です。本書では、 'すべてのライブラリの暗黙的なdlclose()はプロセス終了時に実行されます。 ' –
プロセスが終了すると開いているファイルハンドルはすべて自動的に閉じられます。 DLは単なるオープンファイルなので、これもクローズドになることを意味します。 – Barmar