問題タブ [atexit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Cでクリーンアップを行う別の方法は?
このプログラムを考えてみましょう:
malloc
ただし、失敗する可能性があり、ポインターが作成されないため、これは単純なアプローチfree
です。
だからあなたはこれを行うことができます:
ただし、これは非常にエラーが発生しやすいと思います。20 個のポインターを割り当てる必要があると考えてください。最後のmalloc
エラーの場合、free
19 個の変数とreturn -1
.
も知ってatexit
います。これは、次のように書くのに役立ちます。
どちらの方が良いですが、すべてのポインターをグローバルとして宣言する必要はありません。基本的に、これら2つのアプローチを組み合わせる方法はありますか:
- ポインタのデストラクタを持ち、直接実行するか、
atexit
. - 関数にローカルなポインタを持つ。
multithreading - atexit は他のスレッドが終了するのを待ちますか?
atexit() で登録された関数は、最後に実行される関数ですか? この時点で他のスレッドがまだ実行されている可能性はありますか?
python - atex コールバックでの終了コードの設定
atexit
モジュールに登録され、終了時に呼び出される関数に終了コードを設定する方法はありますか? を呼び出すとsys.exit(code)
エラーが発生し、終了コードが目的の値に設定されません。
の内容atexit_test.py
:
python-3.x - メインプロセスでのみ atexit を実行する Python3
複数の子プロセスを生成するプログラムがありますが、子プロセスではなく、メイン プロセスでのみ atexit.register(function) を呼び出すプログラムを作成するにはどうすればよいですか?
ありがとう
c - POSIX 標準は、atexit() ハンドラのスレッド スタックについて何と言っていますか? OSの練習は何ですか?
UNIX/C プログラムで緊急終了が必要な場合は、exit (3) 関数を使用し、緊急クリーンアップのために atexit (3) ハンドラをインストールします。このアプローチは、アプリケーションがスレッド化されるまで問題なく機能し、スレッド化された時点で atexit() ハンドラーが予期したとおりに動作しなくなりました。
スレッドが atexit() ハンドラーで既に死んでいる可能性があり、それらのスタックの割り当てが解除されている可能性があるというエラーを試行的に学びました。
atexit() による標準のリンク スレッドの消失に関する引用を見つけられませんでした: スレッドは main() からの復帰後に存在しなくなりますが、それは atexit() の呼び出しの前ですか、それとも後ですか? Linux、FreeBSD、および Mac で実際に行われていることは何ですか?
マルチスレッド プログラムで緊急クリーンアップの適切なパターンはありますか?
python - Python プロセスが強制終了されたときに atexit() を実行する
バックグラウンドで実行される python プロセスがあり、スクリプトが終了したときにのみ出力を生成したいと考えています。
呼び出すKeyboardInterupt
と例外が発生し、適切に呼び出されますがsys.exit()
、ターミナルから実行すると、handle_exit() を呼び出さずにスクリプトが終了します。handle_exit()
kill {PID}
バックグラウンドで実行されているプロセスを終了し、終了するhandle_exit()
前に引き続き実行する方法はありますか?