GNU/Linux >> Linux の 問題 >  >> Linux

C の exit()、atexit() のより良い代替

<ブロック引用>

プロセスを終了させる最善の方法は?

<オール>
  • シングル スレッドにする場合は、exit() を使用します。 、コードがマルチスレッド化されていないためです。
  • それ以外の場合は、1 つを除くすべてのスレッドが最後のスレッドの前に終了していることを確認してから、安全に exit() を呼び出します 上記の 1. のため

  • 電源/ハードウェアの障害がいつでも発生する可能性があることを考えると、多くの非自明なマルチスレッド アプリで、ユーザー コードを使用してスレッドを確実に終了することが非常に困難であり、メモリ プールなどを使用することの無秩序な性質があるため、設計することをお勧めします。シャットダウンを細かく管理しようとするのではなく、起動時に一時ファイルなどを消去できるアプリやシステム。

    「終了する前に、割り当てたすべてのリソースをクリーンアップする」は、教室や講義での適切なアドバイスのように聞こえますが、絶え間なく変化する動的システムで多数のスレッド、キュー、およびプールに直面すると、すぐにアホウドリの鎖全体が首にかかります。

    可能であれば、重要な OS で実行している場合は、その仕事とクリーンアップを任せてください。ユーザー コードよりもはるかに優れています。


    Linux
    1. LinuxとWindows:どちらのOSがPCゲームに適しているか

    2. アプリケーションの終了コードを検索する方法は?

    3. `screen`の交換用ショートカット?

    1. Linux用の最高のJavaScriptエディター

    2. 最後の終了コードを含む Bash プロンプト

    3. Linux grep リターン コード

    1. より良いcrontabにはanacronを使用してください

    2. Bashコマンドラインの終了コードがわかりやすく説明されています

    3. プロセスが終了したときのデフォルトの終了コード?