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

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

我有一个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

是否有办法重新做?

python c++ ctypes
1个回答
0
投票

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

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

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

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