Python インタープリターを組み込んだ C++ アプリがあります。コードにはインタープリターが中断される可能性があるポイントがあり、新しいコードを実行するためにインタープリターが「安全な」状態にあることを確認する必要があります。Py_Finalize を呼び出して、すべてを再初期化しますが、有効な状態を維持するために必要な PyObject * 参照がたくさんあります。これを行う機能はありますか、それとも必要ですか? 上記でインタプリタが中断されていると述べたとき、私はセグを意味していました。アプリが回復しようとする障害またはアクセス違反。
1079 次
1 に答える
2
ええと、セグメンテーション違反やアクセス違反から「回復」しようとするのは非常に危険です。そもそもこれらを取得するのには理由があります。それは、プログラムが実行してはならないことを実行しようとしたためです。したがって、バグまたは予期しない状態が発生しました。
Python インタープリターには、前述のような場合に「安全なポイント」にロールバックする機能はありません。インタープリターをファイナライズして再初期化しても、一部の静的データが一貫性のない状態のままになる可能性があります。
なぜこれをしようとしているのかを教えていただければ、別の方法を提案できるかもしれません。
于 2010-01-03T19:35:54.713 に答える