問題タブ [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 投票する
2 に答える
189 参照

c++ - C ++で静的メンバーを宣言すると、リンカーがatexitをリンクするのはなぜですか?

センサーを静的として宣言すると、リンカーはatexit への未定義の参照について不平を言います。

センサーを非静的として宣言すると、そうではありません-なぜですか?

//C++ クラスの静的関数

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

python - スクリプトの前に実行される Python

Python では、 atexitのようなものがあります。Atexit は「ティアダウン」に使用することを意図しています。「セットアップ」のようなものが必要です。私が実行するスクリプトの前に、このsetUpが実行されます。

編集

個別に実行するいくつかの小さなスクリプトがあることを指摘する必要がありました。これらのスクリプトはすべて同じロジックに接続されています。プロジェクトに依存性注入を導入したいのですが、たとえば、すべてのスクリプトを実行する前にpython-injectを構成する必要があります。inject.configure(myConfiguration)すべてをセットアップするためだけに、すべてのスクリプトの最初に同じ設定を DRY したくありません。

ここで、PYTHONSTARTUP に関する @en_Knight の提案を確認してから、もう一度戻ってきます。

解決 策 @en_Knight が PYTHONSTARTUP について提供したことは確実に機能します。私はすべての展開力を持っていますが:]それも良い考えではないと感じています。python-injectのソースを変更する際の問題を解決しました

ご協力ありがとう御座います!

0 投票する
2 に答える
3491 参照

python - Pythonのマルチプロセッシングサブプロセスに「atexit」関数を登録するには?

いくつかのサブプロセス (マルチプロセッシングを使用) があり、それらが停止すると、それぞれが最終的な作業を行う必要があります。次のようなものですが、うまくいきませんでした...

では、どうすればこれを行うことができますか?

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

c++ - シングルトン破壊のための atexit : 失敗ケース

から: https://sourcemaking.com/design_patterns/to_kill_a_singleton

1 つ確かなことは、シングルトン デストラクタが相互に依存している場合、複数のデストラクタを使用することはできないということです。別の方法は、デストロイヤーを完全に避け、代わりにドラフト標準の atexit() 関数に依存することです。寿命と交換なし。

ドラフト標準は多くのことを約束しています: 関数 atexit() を使用して、終了時に呼び出される関数を指定できます。atexit() が呼び出される場合、実装は、atexit() 呼び出しで指定された関数が呼び出されるまで、atexit() 呼び出しの前に初期化されたオブジェクトを破棄しません。

この失敗を確認できる唯一の方法は、デストラクタが Singleton インスタンスに依存する静的に初期化されたオブジェクトが 、Singleton インスタンスの構築に初期化された場合、つまり他の静的初期化によって初期化された場合です。これは、静的インスタンスを持つクラスは、破棄中にシングルトンに依存することを避けるべきであることを示唆しています。(または、少なくとも、そのようなクラスが破棄中にシングルトンの存在をチェックする方法が必要です。)

最後の段落、つまり、どの場合にどのように失敗するかを理解できませんでした。

誰かがそれに光を当ててくれませんか。

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

c++ - atexit() を使用すると、ローカル オブジェクトに対してデストラクタが呼び出されない

助けてください: 私はデストラクタと atexit() について認識しており、次のことも知っています: atexit() は、プログラムの終了時に呼び出される関数を登録します (たとえば、main() が return を呼び出したとき、または exit() がどこかで明示的に呼び出されたとき)。

exit() が呼び出されると、静的オブジェクトは破棄されます (デストラクタが呼び出されます) が、ローカル変数スコープ内のオブジェクトはなく、もちろん動的に割り当てられたオブジェクトも破棄されません (明示的に delete を呼び出した場合にのみ破棄されます)。

以下のコードは次のように出力します: atexit handler Static dtor

atexit() を使用するとローカル オブジェクトのデストラクタが呼び出されない理由を教えてください。

前もって感謝します:

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

c - 同じ終了ハンドラー (atexit 関数) を複数回呼び出すのはなぜですか?

関数:int atexit (void (*function) (void)) 同じ出口処理関数を複数回呼び出すことができます。終了ハンドラーを複数回呼び出すのはなぜですか? 同じ終了ハンドラーを複数回呼び出すことが理にかなっている例を教えてください。

0 投票する
0 に答える
190 参照

c - メモリを解放するために atexit() 関数をどのように使用しますか?

これは簡単なコードです:

プログラムが終了するとき、どうすればメモリを解放できますか。関数「cleanUp」にはパラメーターがありません。では、メモリリークがないように、関数「cleanUp」でメモリを解放するにはどうすればよいですか。

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

rust - stdout にアクセスすると、atexit ハンドラがパニックになるのはなぜですか?

以下の Rust プログラムstdoutは、atexitハンドラ内でアクセスするとパニックになります。

出力:

この登録は登録前に実行する必要があるように思われるatexitため、ハンドラーのこの行はカスタム ハンドラーの後にのみ実行する必要があります。したがって、パニックに陥ることはありません。