为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不退出python的情况下退出python程序内部的c子程序

如何在不退出python的情况下退出python程序内部的c子程序

一只斗牛犬 2023-01-04 10:09:15
我有一个 python 程序,它使用CFFI. python程序多次循环执行c程序。但是exit(0)在一定条件下a被用在了c中。因此,一旦exit(0)in C 正在执行,python 也会自行终止。但我试图实现的是,如果 c 程序被执行并退出exit(0)甚至正常终止,python 程序应该继续运行。除了多处理之外,任何人都知道如何做到这一点?或者可以exit(0)用其他代码代替?非常感谢。python.py:ffi = FFI()lib = ffi.dlopen("mylib.so")ffi.cdef ("int function1(int my_value);")mylib_value = 10;mylib_value = ffi.cast('int', my_value)for i in range(10):    lib.function1(mylib_value)mylib.c:int function1(int mylib_value):    ...    if(certain condition)        exit(0);    else        continue...    ...代码类似于上面。在循环内部,当i=0, c 执行时exit(0),然后 python 程序也退出。我希望 c 在没有 python 存在的情况下退出,以便它将继续运行以下循环。
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

最好的方法是从你的函数中返回一些东西并在你的 python 代码中处理它。


例如:


# main.py

import cffi



ffi = cffi.FFI()

lib = ffi.dlopen('my_lib.so')



ffi.cdef("int function1(int my_value);")



for i in range(10):

    print(f"testing my function with value: {i}")


    mylib_value = ffi.cast('int', i)

    ret_value = lib.function1(mylib_value)

    if ret_value == -1:

        print("c code exited before completing")

    else:

        print("c code exited normally")


// main.c

int function1(int my_value) {

    if (my_value == 1)

        return -1;


    // My code here


    return my_value;

}

运行exit(0)确实会终止你的 python 执行。


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信