我有一個 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 執行。
添加回答
舉報
0/150
提交
取消