Oracle Solaris Studio 12.2: C ユーザーガイド

2.11.7 fini

#pragma fini (f1[, f2…,fn]

main() ルーチンを呼び出したあと、<f1> から <fn> (終了関数) までの関数を呼び出します。この種の関数は、型が void で引数はあってはいけません。プログラム制御下でプログラムが終了したとき、またはこのプログラムを含む共有オブジェクトがメモリーから除去されたときに呼び出されます。次の「初期化関数」の場合と同様、終了関数もリンクエディタによって処理された順に実行されます。

大域プログラム状態が初期化関数の影響を受ける場合には注意が必要です。たとえばシステムライブラリ初期化関数を使用したときに何が発生するかがインタフェースに明示的に規定されていないかぎり、システムライブラリ初期化関数によって変更される可能性がある errno の値などの大域状態情報をすべて取得し、復元する必要があります。

このような関数は #pragma fini 指令の中に登場するたびに、1 回呼び出されます。