我有一个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代码中处理。
比如说
# 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执行。