問題タブ [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 - atexit() によって登録された関数の数は?
サードパーティ ライブラリが一部の関数を に登録したという問題が発生しましたatexit()
。登録されている関数の数 (または関数) を知る方法はありますか?
こちらで確認しましたが、NOとのことでした。
なんとかなろうとしたATEXIT_MAX
のですsysconf
が、 のような膨大な数になりました2^31-1
。
それを機能させる方法はありますか?
c - atexit ハンドラーから exit を呼び出したときに無限ループにならないのはなぜですか?
このプログラムは、 で呼び出す関数を登録しexit()
ますatexit()
。
からman atexit
これらのコールバックは exit() を呼び出してはなりません
無限ループを待っていましたが、代わりに一度だけ呼び出しますmachiavellian()
。何が起こるのですか?
ipython - Ipythonを使用してスクリプトを終了するときにatexit関数が呼び出されない
以下は、test_atexit.py というスクリプトで記述されたコードです。
python2.4 を使用して関数を実行すると、exit_function が呼び出されます
ipython を使用して同じものを実行すると、exit_function が呼び出されません
Ipythonを使用してスクリプトを実行するときにexit_functionが呼び出されない理由と、ipythonでexit_functionを呼び出す方法
c++ - atexit() は、独立した CLang で定義されていません
次のコマンドラインで、CLang を使用していくつかの C++ コードをコンパイルおよびリンクしようとしています。
(出力、インクルード、定義などを省略しました。これらは問題ありません)
私が抱えている問題は、リンク中にエラーが発生することです
私はすでにこの問題にかなりの時間を費やしてきましたが、私の人生では、これを適切に解決する方法を理解することはできません.
これまでの私の調査では、 atexitがstdlib.hで定義されていることが示されていますが、この状況では標準ライブラリを使用できません (これも私の決定ではなく、この特定のプロジェクトでは完全に必須です)。
私が知る限り、この問題が発生しているのは、この方法でコンパイルされたコードに突然静的オブジェクトが含まれるようになったためです。これにより、コンパイラはこれらのオブジェクトに対して実行されるコン/デストラクタを登録しようとします。__cxa_atexit (同じ理由で未定義の参照エラーも発生していたため無効にしました) またはatexitへの呼び出しが必要です。
また、コードで任意のatexit関数を定義しようとしましたが、リンカはこれとは何の関係も持ちたくないようです (これは私にはかなり奇妙に思えます)。
だから私が持っている質問は次のとおりです:標準ライブラリを含める必要がなくても、リンカがatexitについて泣き言を言わないようにするにはどうすればよいですか?
事前にたくさんありがとう!
python - Python でのシグナル ハンドラと atexit ハンドラの呼び出し
以下のような Python コードがあります。
実際のコードはこのスニペットよりもはるかに複雑ですが、構造は同じです。つまり、メイン関数は無限ループを維持します。
DB ハンドルなど、占有されているリソースを解放するには、シグナル コールバックが必要です。SIGTERM
次に、サーバーが強制終了された場合に備えて、リリース関数を呼び出してプロセスを終了するだけのハンドラーを追加します。1atexit
つは、プロセスを正常に処理することを目的としています。
release
今、プロセスが強制終了されたときに一度だけ呼び出されたいという問題があります。私のコードに改善はありますか?
c++ - C++ atexit() 関数で奇妙なクラッシュ
私は Visual Studio 2013 で MSVC を使用しています。これは私がコンパイルしているコードです:
現在のやり方 - それは魅力のように機能します。プログラムを開始すると、クラッシュ関数に入り、一時停止し、キーを押すと、通常どおり終了します。すべてクール。ただし、while ループのコメントを外し、コンソールの [X] ボタンを使用して閉じると、endl 関数内でクラッシュが発生します。クラッシュの原因が _Ostr.widen() であることがわかりました。これは、MSVC が提供する endl 関数の実装です。
Ctrl+C を使用してプログラムを終了しても、同じ結果になります。どうすればこれを修正できますか?
c - calloc() を使用して char 配列を設定し、完了したら配列を「解放」します
文字列の配列を設定しようとしています (Linux を使用して C で)。配列は 11 個の文字列 (静的な長さ) を保持します。最初に配列を次のように設定しました。
しかし、私のコードには fgets(input,sizeof(input),stdin) を呼び出す部分があります。この fgets() 部分が呼び出されると、Answers 配列の最後の要素が入力の値で上書きされていました (Answers のスタック上の位置に関する何か?)。そのため、Answers 配列に使用するメモリを「ロックイン」しようとしています。使いますか
また
ループを実行します--
また、完了したら、atexit() を使用して割り当てられたメモリを解放する必要があります... atexit() 内で引数を渡すことができないため、これを行う最善の方法は何でしょうか?
atexit(Free);
前もって感謝します!