問題タブ [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.

0 投票する
6 に答える
330 参照

c - Cでクリーンアップを行う別の方法は?

このプログラムを考えてみましょう:

mallocただし、失敗する可能性があり、ポインターが作成されないため、これは単純なアプローチfreeです。

だからあなたはこれを行うことができます:

ただし、これは非常にエラーが発生しやすいと思います。20 個のポインターを割り当てる必要があると考えてください。最後のmallocエラーの場合、free19 個の変数とreturn -1.

も知ってatexitいます。これは、次のように書くのに役立ちます。

どちらの方が良いですが、すべてのポインターをグローバルとして宣言する必要はありません。基本的に、これら2つのアプローチを組み合わせる方法はありますか:

  1. ポインタのデストラクタを持ち、直接実行するか、atexit.
  2. 関数にローカルなポインタを持つ。
0 投票する
1 に答える
970 参照

multithreading - atexit は他のスレッドが終了するのを待ちますか?

atexit() で登録された関数は、最後に実行される関数ですか? この時点で他のスレッドがまだ実行されている可能性はありますか?

0 投票する
1 に答える
898 参照

python - atex コールバックでの終了コードの設定

atexitモジュールに登録され、終了時に呼び出される関数に終了コードを設定する方法はありますか? を呼び出すとsys.exit(code)エラーが発生し、終了コードが目的の値に設定されません。

の内容atexit_test.py:

0 投票する
1 に答える
161 参照

python-3.x - メインプロセスでのみ atexit を実行する Python3

複数の子プロセスを生成するプログラムがありますが、子プロセスではなく、メイン プロセスでのみ atexit.register(function) を呼び出すプログラムを作成するにはどうすればよいですか?

ありがとう

0 投票する
1 に答える
1156 参照

c - POSIX 標準は、atexit() ハンドラのスレッド スタックについて何と言っていますか? OSの練習は何ですか?

UNIX/C プログラムで緊急終了が必要な場合は、exit (3) 関数を使用し、緊急クリーンアップのために atexit (3) ハンドラをインストールします。このアプローチは、アプリケーションがスレッド化されるまで問題なく機能し、スレッド化された時点で atexit() ハンドラーが予期したとおりに動作しなくなりました。

スレッドが atexit() ハンドラーで既に死んでいる可能性があり、それらのスタックの割り当てが解除されている可能性があるというエラーを試行的に学びました。

atexit() による標準のリンク スレッドの消失に関する引用を見つけられませんでした: スレッドは main() からの復帰後に存在しなくなりますが、それは atexit() の呼び出しの前ですか、それとも後ですか? Linux、FreeBSD、および Mac で実際に行われていることは何ですか?

マルチスレッド プログラムで緊急クリーンアップの適切なパターンはありますか?

0 投票する
3 に答える
13170 参照

python - Python プロセスが強制終了されたときに atexit() を実行する

バックグラウンドで実行される python プロセスがあり、スクリプトが終了したときにのみ出力を生成したいと考えています。

呼び出すKeyboardInteruptと例外が発生し、適切に呼び出されますがsys.exit()、ターミナルから実行すると、handle_exit() を呼び出さずにスクリプトが終了します。handle_exit()kill {PID}

バックグラウンドで実行されているプロセスを終了し、終了するhandle_exit()前に引き続き実行する方法はありますか?