我正在使用C ++,Python 3.5和Windows 7.我目前正在使用子进程从我的Python代码调用C ++可执行文件,然后使用以下代码终止可执行文件:
open = Popen([path\to\exe])
open.terminate()
这似乎不太可能,但是当Python调用终止时,我的C ++代码是否可以调用函数?我已经找到了在使用X按钮或单独关闭C ++时调用函数的选项,但这个问题太具体了。
答案 0 :(得分:0)
为了能够终止你的C ++代码,你必须先做
这样的事情p = subprocess.Popen(["path\to\exe"])
#... do stuff
#and when you want to terminate it
p.terminate()
但你不能再次调用Popen
,因为它会产生另一个实例,会立即杀死:无用。
当您终止该过程时,它会像kill -9
或taskkill /F
一样在此处停止。如果您希望有机会对流程做出反应,请执行此操作而不是p.terminate()
仅限Windows:
os.system("taskkill /PID "+str(p.pid))
Unix& Windows(只读文档,但没有测试):
os.kill(p.pid,signal.CTRL_BREAK_EVENT)
(省略/F
标志允许在C ++程序中放置一个句柄来执行一些退出/清理过程,然后退出)
编辑:在C ++程序中放置一个句柄(当你明确调用atexit
时调用exit
,在这种情况下不工作):