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

问题描述 投票:0回答:1

我有一个python程序,它使用 CFFI. python程序做了一个循环,多次执行c程序。然而,一个 exit(0) 是在一定条件下用在c中的。所以一旦 exit(0) 在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程序不存在,这样它就会一直跟着循环运行。

python c loops exit
1个回答
0
投票

你最好的方法是从你的函数内部返回一些东西,然后在你的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执行。

© www.soinside.com 2019 - 2024. All rights reserved.