Cでは、「メインプロセスが終了する」間のリンクを欠落し、「ATEXITに登録されている関数を呼び出す」

StackOverflow https://stackoverflow.com/questions/1799306

  •  22-09-2019
  •  | 
  •  

質問

cで、メインプロセスが終了したとき - 登録されている関数を呼び出すことはどのように知っていますか atexit()?

私はその方法を理解しています atexit() 動作しますが、「メインプロセスエンディング」と「登録されている機能を呼び出す」の間の通信がわかりません atexit()「私は少し冗長です。

ありがとう!

役に立ちましたか?

解決

から C標準 PDFリンク](5.1.2.2.3):

最初の呼び出しからのリターン main 関数は呼び出しに相当します exit によって返される値を持つ関数 main その議論として機能します。に到達します } メイン関数を終了する値は値を返します 0.

それはの責任です exit 登録されている関数を呼び出す関数 atexit (すべての説明については、標準の7.20.4.3を参照してください exit します)。

他のヒント

cで、 main() 関数は実際には、ランタイムに組み込まれている他の関数によって呼び出されます。この関数、後 main() 関数は終了し、クリーンアップするためにさらにいくつかのことを行います。そのうちの1つは、 atexit(). 。この関数は、実際には機能ポインターの何らかの静的リストを保存します。これは、ランタイムの後に呼び出されます main().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top