簡體   English   中英

如何防止嵌入式python退出()我的進程

[英]How to prevent embedded python to exit() my process

我在運行嵌入式python時遇到了麻煩。 事實證明,我無法捕獲sys.exit()引發的SystemExit異常;

這是我到目前為止:

$ 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_SimpleFileExFlags函數(以及使用它的所有函數,包括PyRun_AnyFileEx )通過退出SystemExit或打印回溯來處理異常。 使用PyRun_File*函數族來處理周圍代碼中的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM