リンカーとライブラリ

初期設定関数および終了関数

実行時リンカーがプロセスイメージを作成し、再配置を行なった後、各共有オブジェクトと実行可能ファイルにはいくつかの初期設定関数を実行する機会があります。共有オブジェクトの初期設定はすべて、実行可能ファイルが制御を得る前に実行されます。

同様に、動的オブジェクトには終了関数が存在できます。終了関数は、元となるプロセスが終了手順を開始した後、またはそのオブジェクトが dlclose(3DL) により実行プロセスから削除された場合、atexit(3C) の機構で実行されます。詳細は、atexit(3C) のマニュアルページを参照してください。

動的オブジェクトは、表 7-43 に記述されているように、動的構造内の DT_INIT_ARRAY/DT_INIT および DT_FINI_ARRAY/DT_FINI エントリを介して初期設定関数および終了関数を指定します。

初期設定および終了についての詳細は、「初期設定および終了セクション」および 「初期設定および終了ルーチン」を参照してください。


注 -

atexit(3C) 終了処理は通常は行われますが、プロセス終了時に実行されることは保証されません。たとえば、プロセスが _exit() を呼び出した場合、またはプロセスが捕捉もされず無視もされない信号を受け取って終了した場合、プロセスは終了処理を実行しません。