1

を使用して登録された関数の場合atexit(): それらへの参照を取得して直接呼び出すことは可能ですか?

gccこれは一般的な質問ですが、 /の使用に関する解決策glibcは大歓迎です。

4

2 に答える 2

3

ポータブルな方法ではありません。登録されている関数のリストはランタイムライブラリによって所有されており、それにアクセスするためのインターフェイスはありません。

コメントによるglibcの詳細については、exitハンドラーはexit.cexit.hによって実装されます。抽象化/データの隠蔽をドリルスルーできることを理解するのに十分なほど、それらを徹底的に研究していません。たとえば、一般的に利用できない可能性のあるglibc固有のヘッダーを含める必要がある場合があります。

于 2012-01-19T12:31:14.007 に答える
2

いいえ。ただし、アプリケーション内のすべてのコードを制御できる場合は、自分でリストを維持しatexit()、システムが終了したときにリストを実行する単一の関数を real に登録できます。

于 2012-01-19T12:35:51.360 に答える