問題タブ [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.
python - FlaskとWeb.pyはどちらもatexitにハングアップします
私はこのシンプルなFlaskアプリを持っています:
prolog_handlerモジュールは、トリプルストアとのセッションを開始し、いくつかのルールをロードします。また、セッションを終了し、「Closing...」のようなメッセージを出力するatexit関数もあります。を使用してbashプロンプトからサーバーを起動しますpython myapp.py
。CTRL-Cを押してサーバーを停止しても、何も起こりません。bashプロンプトに戻らず、「Closing...」メッセージが出力されません。Web.pyでもこれを実行しようとしましたが、同じ結果になりました。
prolog_handlerが行うことは、文字通り次のように単純です。
では、なぜatexitタスクを実行するのがそれほど難しいのでしょうか。
PS:プロローグセッションを開いて終了することに関するすべてのことをコメントアウトし、「Closing ...」というメッセージを出力する部分を残すと、CTRL-を押すと「Closing...」メッセージが表示されます。 Cと私はbashプロンプトに戻ります。それは期待どおりに機能します。しかし、私がそれで有用なことを何もできない場合、atexitのポイントは何ですか?
c - 親プロセス出口で子プロセスを強制終了する
私はcとプログラミングに非常に慣れていないので、助けが必要です。Linux(cygwin)のcでは、終了時にすべての子プロセスを削除する必要があります。私は他の同様の質問を見ましたが、それを機能させることができません。私はもう試した-
どういうわけか、「作品」は今までに印刷されません。ctrl+cを押して終了します。
また、私は試しました-
しかし、私はcygwinを使用しているので、私がcygwinを使用すると#include <sys/prctl.h>
、ファイルまたはディレクトリが見つからないと言われ、インストールするパッケージがわかりません。また、私のprctl()
機能が機能する場合、それはすべてのゾンビを殺しますか?
私のプログラムはクライアントサーバーであり、各クライアントを処理するためのサーバーforks()です。サーバーがシャットダウンしたときにゾンビを残さないと思います。
c++ - atexit()に登録されている関数はいつ呼び出されますか
atexit()
に登録されている関数が、グローバル変数が破棄される前に呼び出されるのか、破棄される後に呼び出されるのかを知りたいです。これは、定義された標準または実装によって指定されていますか?
python - 最終的に対 atexit
最終的には、次の高レベル構造を持つ短い python ラッパー スクリプトを作成してサポートする必要があります。
ブロック内で行うことは、スクリプトの呼び出し元sans window-dressingに対してexcept
例外を再発生させることだけであることに注意してください。これは私の特定のコンテキストでは問題ではありません。ここでの考え方は、例外の有無にかかわらず、常にブロックを使用してクリーンアップ コードを実行する必要があるということです。finally
atexit
この目的のためにハンドラーを使用したほうがよいでしょうか? によって導入された余分なレベルのインデントなしで行うことができましたtry
。
php - シャットダウン機能をトリガーせずにphpコマンドを終了する
以前に登録されたすべてのシャットダウン関数(register_shutdown_functionを使用)をトリガーせずに(たとえば、exit()関数を使用して)phpスクリプトを終了するにはどうすればよいですか?
ありがとう!
編集:あるいは、登録されているすべてのシャットダウン機能をクリアする方法はありますか?
python - atexitがPythonに登録されないのはなぜですか?
Tkinterにループがあります:
atexitは失敗します。しかし、レジスターを印刷しようとしても問題はありません。save_fはTkinterループに入れると機能しましたが、atexitは機能しませんでした。それで、誰かが私が間違っていることを教えてもらえますか?
PS
初めてatexitを書くのを忘れてすみません。しかし、それは私のコードにあります。
編集:元のコードはここにあります
python - プログラム開始時に実行されるAtexit関数
私はこの簡単な手順を持っています:
問題はsave_f
、プログラムを実行するとすぐに呼び出されることです。これは私のコードのすべてではなく、重要な部分です。ここに問題がない場合は、私に教えてください。そうすれば、私は何をすべきかを知ることができます。
python - Pythonでインスタンスメソッドをatexitに登録することの意味は何ですか?
かなりの量のメモリを消費する可能性のある非常に大きな Python クラスがあるとします。クラスには、インタープリターが終了したときにいくつかのものをクリーンアップする責任があるいくつかのメソッドがあり、atexit モジュールに登録されます。
このクラスのさまざまなインスタンスは、プログラムの存続期間中に出入りする可能性があります。私の質問は次のとおりです。
del
たとえば、インスタンスへの他のすべての参照の場合、インスタンス メソッドを atexit に登録することは安全ですか? 言い換えれば、atexit.register()
従来のバインディングと同じ方法で参照カウンターをインクリメントしますか? もしそうなら、メソッドの 1 つが atexit に登録されているため、クラス インスタンス全体がメモリ内でハングアップし、終了するまで待機する必要がありますか? または、インスタンスの一部をガベージ コレクションできますか? ガベージ コレクションが効果的に行われるように、このような一時的なクラス インスタンスの終了時にそのようなクリーンアップを構成するための好ましい方法は何でしょうか?