从Python子进程终止时的C++调用函数

2024-03-29 09:04:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用C++、Python 3.5和Windows 7。我现在使用子进程调用python代码中的C++可执行文件,然后使用下面的代码终止可执行文件:

open = Popen([path\to\exe])
open.terminate()

这似乎不太可能,但是当Python调用终止时,我的C++代码有可能在自己调用一个函数吗?我发现了当用X按钮或自己关闭C++时调用函数的选项,但是这个问题太具体了。你知道吗


Tags: topath函数代码可执行文件进程windows选项
1条回答
网友
1楼 · 发布于 2024-03-29 09:04:07
<>为了能够终止C++代码,你必须先做类似

的事情
p = subprocess.Popen(["path\to\exe"])
#... do stuff
#and when you want to terminate it
p.terminate()

但是您不能再次调用Popen,因为它将生成另一个实例,这将立即杀死:无用。你知道吗

当您终止进程时,它会像kill -9taskkill /F一样在那里停止进程。如果你想给这个过程一个反应的机会,那么就这样做而不是p.terminate()

仅限Windows:

os.system("taskkill /PID "+str(p.pid))

Unix和Windows(只是读入文档,但没有进行测试):

os.kill(p.pid,signal.CTRL_BREAK_EVENT)

(省略^ {< CD5>}标志允许在C++程序中放置句柄执行一些退出/清理过程,然后退出)

< >编辑:在C++程序中放置句柄(^ {CD6>},当您调用显式^ {< CD7>},在这种情况下不工作)时调用:< /p>

(来源:How can I catch a ctrl-c event? (C++)

相关问题 更多 >