8
我在運行嵌入式python時遇到了麻煩。事實證明,我無法捕獲由sys.exit()引發的SystemExit異常;如何防止嵌入式python退出()我的過程
這是我到目前爲止有:
$ cat call.c
#include <Python.h>
int main(int argc, char *argv[])
{
Py_InitializeEx(0);
PySys_SetArgv(argc-1, argv+1);
if (PyRun_AnyFileEx(fopen(argv[1], "r"), argv[1], 1) != 0) {
PyObject *exc = PyErr_Occurred();
printf("terminated by %s\n",
PyErr_GivenExceptionMatches(exc, PyExc_SystemExit) ?
"exit()" : "exception");
}
Py_Finalize();
return 0;
}
而且,我的腳本是:
$ cat unittest-files/python-return-code.py
from sys import exit
exit(99)
運行它:
$ ./call unittest-files/python-return-code.py
$ echo $?
99
我必須執行文件,不是一個命令。
不錯的解決方案。現在使用PyRun_FileEx()並在PyErr_GivenExceptionMatches()之前檢查PyErr_Occurred()。謝謝。 – Caruccio 2011-04-04 17:47:29