os._exit()
が呼び出されていない、全てのPythonの初期化は、次に、所定のPythonコードを実行し、Py_Initialize
でインタプリタを起動し、オペレーティングシステムにステータスコードを渡すと仮定します。それは本当にこのです:インタプリタがきれいに抜けるように
n = PyImport_ImportFrozenModule("__main__");
if (n == 0)
Py_FatalError("__main__ not frozen");
if (n < 0) {
PyErr_Print();
sts = 1;
}
else
sts = 0;
if (inspect && isatty((int)fileno(stdin)))
sts = PyRun_AnyFile(stdin, "<stdin>") != 0;
#ifdef MS_WINDOWS
PyWinFreeze_ExeTerm();
#endif
if (Py_FinalizeEx() < 0) {
sts = 120;
}
error:
PyMem_RawFree(argv_copy);
if (argv_copy2) {
for (i = 0; i < argc; i++)
PyMem_RawFree(argv_copy2[i]);
PyMem_RawFree(argv_copy2);
}
PyMem_RawFree(oldloc);
return sts;
さえsys.exit
は、単純に例外が発生します。
Pythonインタプリタが 上のすべての出口を呼び出すメインフック/機能はありますか?
あなたのmain()
をtry..finallyでラップするだけです。
実際に答えはわかりませんが、使用しているオペレーティングシステムに基づいて変更されていると思います – yuvi
ロードされたモジュールをリリースしてステータスコードを返すためにC APIを呼び出します。あなたの意図は何ですか? – paiv
私は答えを提供しましたが、@ yuviが述べたように、正確に何が欲しいかを知ることは難しいです。 – xaav