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

c - atexit() によって登録された関数の数は?

サードパーティ ライブラリが一部の関数を に登録したという問題が発生しましたatexit()。登録されている関数の数 (または関数) を知る方法はありますか?

こちらで確認しましたが、NOとのことでした。

なんとかなろうとしたATEXIT_MAXのですsysconfが、 のような膨大な数になりました2^31-1

それを機能させる方法はありますか?

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

c - atexit ハンドラーから exit を呼び出したときに無限ループにならないのはなぜですか?

このプログラムは、 で呼び出す関数を登録しexit()ますatexit()

からman atexit

これらのコールバックは exit() を呼び出してはなりません

無限ループを待っていましたが、代わりに一度だけ呼び出しますmachiavellian()。何が起こるのですか?

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

ipython - Ipythonを使用してスクリプトを終了するときにatexit関数が呼び出されない

以下は、test_atexit.py というスクリプトで記述されたコードです。

python2.4 を使用して関数を実行すると、exit_function が呼び出されます

ipython を使用して同じものを実行すると、exit_function が呼び出されません

Ipythonを使用してスクリプトを実行するときにexit_functionが呼び出されない理由と、ipythonでexit_functionを呼び出す方法

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

c++ - atexit() は、独立した CLang で定義されていません

次のコマンドラインで、CLang を使用していくつかの C++ コードをコンパイルおよびリンクしようとしています。

(出力、インクルード、定義などを省略しました。これらは問題ありません)

私が抱えている問題は、リンク中にエラーが発生することです

私はすでにこの問題にかなりの時間を費やしてきましたが、私の人生では、これを適切に解決する方法を理解することはできません.

これまでの私の調査では、 atexitがstdlib.hで定義されていることが示されていますが、この状況では標準ライブラリを使用できません (これも私の決定ではなく、この特定のプロジェクトでは完全に必須です)。

私が知る限り、この問題が発生しているのは、この方法でコンパイルされたコードに突然静的オブジェクトが含まれるようになったためです。これにより、コンパイラはこれらのオブジェクトに対して実行されるコン/デストラクタを登録しようとします。__cxa_atexit (同じ理由で未定義の参照エラーも発生していたため無効にしました) またはatexitへの呼び出しが必要です。

また、コードで任意のatexit関数を定義しようとしましたが、リンカはこれとは何の関係も持ちたくないようです (これは私にはかなり奇妙に思えます)。

だから私が持っている質問は次のとおりです:標準ライブラリを含める必要がなくても、リンカがatexitについて泣き言を言わないようにするにはどうすればよいですか?

事前にたくさんありがとう!

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

python - Python でのシグナル ハンドラと atexit ハンドラの呼び出し

以下のような Python コードがあります。

実際のコードはこのスニペットよりもはるかに複雑ですが、構造は同じです。つまり、メイン関数は無限ループを維持します。

DB ハンドルなど、占有されているリソースを解放するには、シグナル コールバックが必要です。SIGTERM次に、サーバーが強制終了された場合に備えて、リリース関数を呼び出してプロセスを終了するだけのハンドラーを追加します。1atexitつは、プロセスを正常に処理することを目的としています。

release今、プロセスが強制終了されたときに一度だけ呼び出されたいという問題があります。私のコードに改善はありますか?

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

c++ - C++ atexit() 関数で奇妙なクラッシュ

私は Visual Studio 2013 で MSVC を使用しています。これは私がコンパイルしているコードです:

現在のやり方 - それは魅力のように機能します。プログラムを開始すると、クラッシュ関数に入り、一時停止し、キーを押すと、通常どおり終了します。すべてクール。ただし、while ループのコメントを外し、コンソールの [X] ボタンを使用して閉じると、endl 関数内でクラッシュが発生します。クラッシュの原因が _Ostr.widen() であることがわかりました。これは、MSVC が提供する endl 関数の実装です。

Ctrl+C を使用してプログラムを終了しても、同じ結果になります。どうすればこれを修正できますか?

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

c - calloc() を使用して char 配列を設定し、完了したら配列を「解放」します

文字列の配列を設定しようとしています (Linux を使用して C で)。配列は 11 個の文字列 (静的な長さ) を保持します。最初に配列を次のように設定しました。

しかし、私のコードには fgets(input,sizeof(input),stdin) を呼び出す部分があります。この fgets() 部分が呼び出されると、Answers 配列の最後の要素が入力の値で上書きされていました (Answers のスタック上の位置に関する何か?)。そのため、Answers 配列に使用するメモリを「ロックイン」しようとしています。使いますか

また

ループを実行します--

また、完了したら、atexit() を使用して割り当てられたメモリを解放する必要があります... atexit() 内で引数を渡すことができないため、これを行う最善の方法は何でしょうか?

atexit(Free);

前もって感謝します!