如何在不退出 python 的情况下退出 python 程序内的 c 子程序
How to exit c sub-programs inside of python program, without exiting python
我有一个 python 程序,它使用 CFFI
加载 c 程序。 python 程序多次循环执行 c 程序。但是在某些情况下,在c中使用了exit(0)
。因此,一旦 C 中的 exit(0)
正在执行,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 不存在的情况下退出,这样它将保持 运行ning 跟随循环。
最好的方法是 return 从你的函数中处理一些东西,然后在你的 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 执行。
我有一个 python 程序,它使用 CFFI
加载 c 程序。 python 程序多次循环执行 c 程序。但是在某些情况下,在c中使用了exit(0)
。因此,一旦 C 中的 exit(0)
正在执行,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 不存在的情况下退出,这样它将保持 运行ning 跟随循环。
最好的方法是 return 从你的函数中处理一些东西,然后在你的 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 执行。