如何使用 ctypes 停止和重新启动从 Python 运行的C++代码

how to stop and restart C++ code running from python with ctypes

本文关键字:运行 Python C++ 代码 重新启动 ctypes 何使用      更新时间:2023-10-16

我有一个C++代码,我运行并使用它的Python函数。我的问题是 - 我如何阻止该代码运行(如果它在控制台中,则为 ctrl+c(然后重新启动,但只有 c++ 部分,python 的其余部分应该像以前一样工作。

以下是我如何使用 c++ 代码:

from os.path import abspath, dirname, join
fname = abspath(inspect.getfile(inspect.currentframe()))
lib = ctypes.cdll.LoadLibrary(join(dirname(fname), 'shared_lib.so'))
func = lib.func
func.restype = None
func.argtypes= None

有没有办法重做?

您可以添加信号处理程序:

import signal
from os.path import abspath, dirname, join
def restart_server():
# Restart code
signal.signal(signal.SIGTERM, restart_server)
fname = abspath(inspect.getfile(inspect.currentframe()))
lib = ctypes.cdll.LoadLibrary(join(dirname(fname), 'shared_lib.so'))
func = lib.func
func.restype = None
func.argtypes= None

此信号处理程序捕获信号终止 (Ctrl+C( 并调用给定函数。