2

atexitに登録されている関数は、通常のプログラム終了時に常に呼び出されることが保証されていますか?(FreeBSDで、プログラムが正常に終了した場合でも、atexitに登録した関数が呼び出されないというシナリオに遭遇しました)。

4

2 に答える 2

3

atexitいいえ。最初に、 0以外の値を返す場合、関数は呼び出されません。第二に、関数が正常に戻らない前に登録された場合、それは呼び出されません。

于 2011-04-15T09:12:10.763 に答える
1

「通常の終了」とは何ですか?

UnixおよびC99には、関数_Exit(POSIXとC99の両方)および_exit(POSIXのみ)があり、atexitハンドラーを実行せずに任意のステータスでプログラムを終了できます。それらがすべて実行されていないことを私が知っている他のケースは、明らかに「異常終了」バケットに失敗します。

于 2011-04-15T09:07:10.220 に答える