問題タブ [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 に答える
1057 参照

python - Python モジュールで atexit によって呼び出されるオブジェクトのクリーンアップと関数のシーケンス

boost-python を使用して、レガシー C++ ライブラリを Python と統合しています。従来のライブラリにはグローバルな初期化がいくつかあり、その中のクラスはアプリケーション全体のデータを使用します。ラップされたすべてのオブジェクトが破棄された後にレガシー ライブラリのシャットダウン関数が呼び出されるようにする必要があり、これは atexit を使用してシャットダウン関数を登録することで実現できると考えました。しかし、atexit がシャットダウン関数を呼び出した後、ラップされたオブジェクトがクリーンアップされ、レガシー ライブラリ内で複数のセグメンテーション違反が発生することがわかりました。

終了する前にラップされたオブジェクトで del を呼び出すことで目的の動作を実現できますが、削除を Python に任せたいと考えていました。オブジェクトのドキュメントにある赤い警告ボックスを確認しました。__del__、私の理想の世界は到達できないのだろうかと思っています。

Python モジュールでレガシー コードをラップするときに、すべてのオブジェクトがクリーンアップされた後にシャットダウン メソッドが確実に呼び出されるようにするための提案はありますか?

重要な場合のプラットフォームの詳細:

  • パイソン 2.7.2
  • ビジュアル スタジオ 2013
  • 64 ビット ビルド

最小限のコード:

コンパイルしたら、これを python を使用して実行し、次の入力と出力を表示できます。

>>> レガシー
legacy::initializeをインポート
>>> test = legacy.Test()
>>> ^Z
legacy::shutdown
legacy::Test::~Test

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

ruby - Selenium chromedriver が at_exit でうまく動作しない

これは私のコードのバグですか、それとも Selenium や RSpec などのバグですか?

私が書いている Cucumber テストでは、Chrome ドライバーをシャットダウンして再起動する必要があります。ただし、この 2 番目のドライバーを適切にシャットダウンすることはできません。以下の簡略化された例は、問題を示しています: (以下のコードは、Cucumber の複雑さを追加せずに問題を示しているため、RSpec のみです。)

このコードを実行すると、次のエラーが発生します。

ブロックが実行されると、2 番目の chromedriver プロセスが実行されなくなっていることがわかりますat_exit。これは、シャットダウンの原因となっているメカニズムが何であれ、Chrome ウィンドウを開いたままにするため、問題を引き起こします。

RSpec のafter(:suite)メカニズムは期待どおりに機能します。Cucumber に対応するメカニズムはありますか (この場合は機能しない 以外at_exit)? または、ブロックが実行される前に chomedriver が終了しないようにする方法はありますか (そのため、期待どおりにメソッドをat_exit使用してシャットダウンできます)。quit

最新の Selenium および rspec パッケージを使用して、Mac OS 10.9.5 で Ruby 2.0.0 を実行しています。

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

python - atexitがファイルに書き込んでいない

atexitファイルへの出力を試みて、モジュールが正しく動作するかどうかをテストしています。willの実際の目的はatexit開いているポートを閉じることですが、これはatexitそもそもが機能しているかどうかをテストすることです。ただし、atexitファイルに印刷されていません。なぜですか?どんな助けでも大歓迎です。

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

c - プログラムのどこで atexit() を呼び出すかは重要ですか?

基本的に、SDLでプログラムを書いています。

これはコードの一部です:

私の質問は次のとおりです。(game.window == NULL)C の手続き型の性質を考慮すると、ケースとreturn 1実行の場合はどうなりますか。プログラムは、このステートメントの後に続く関数をreturn 1呼び出さずに終了しますか?atexit()if

プログラムは、ステートメントの の後に関数があるにもかかわらず、両方とも関数内にあるSDL_DestroyWindow()とを呼び出しますか?SDL_Quit()atexit()atexit()return 1if (game.window == NULL)

私が理解している限り、C はコードを上から下に実行しatexit()ますreturn 1

0 投票する
4 に答える
1366 参照

python - Python 2.7 で atexit から関数を登録解除できません

まず、flush メソッドを使用して記録クラスを作成しました。

次に、手動で停止したとき、クラッシュしたとき、または何らかの理由で終了時にフラッシュしたかったのです。

だから私は使用しました:

そして、それはかなりうまくいきました。

しかし今、私は、別のバッファサイズと別のパスで、記録、記録の停止、再記録を複数回行いたいと考えています。したがって、破棄してから、いくつかをインスタンス化する必要がありRecorderます。ある程度は機能しますが、 oldRecorderのメモリ (いくつかの fat を含むself._big_buffer̀) は によって保持されているため、解放されませんatexit。明示的に呼び出す場合でもdelatexit.unregister(self._flush)Python 3のみなのでできません。

既存のインスタンスを再利用するのではなく、古いインスタンスを破棄して新しいインスタンスを作成したいと考えています。

このような場合、どのように対処しますか?

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

python - Pythonでsys.exitfuncが機能しない

次の簡単なコードを実行しようとしています

そしてそれは印刷します

「From Test method」が出力されない理由がわかりません

ただし、 atexit を使用しても問題なく動作します

出力

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

c++ - C++ 終了時に電子メールを送信

私がやろうとしているのは、プログラムを終了するときに電子メールを送信することです。関数を使用atexit();してこれを行いますが...正しく機能していません。

SendEmail();関数は時間がかかりすぎて何もしませんか? サーバーの応答も出力しません ( で使用すると正常に動作しますmain();) 。