我创建了一个示例,说明如何使用套接字而不是共享内存信号灯在Windows上实现这种行为。这可以实现同样的效果;只要至少有一个Python脚本在运行,c++程序就会一直运行。一旦所有的脚本都完成了,只要在某个超时时间内不再启动Python脚本,c++程序就会结束。在
这里的大部分代码都进入了c++程序,该程序运行一个线程,从Python脚本监视TCP连接。在
Python脚本只检查/启动Windows程序,然后打开一个套接字,直到脚本结束。在
Windows程序检测套接字连接和断开连接,从而跟踪Python脚本的运行时间。在
在这些示例中,Windows程序恰好名为“ConsoleApplication11.exe”。我使用了1234端口和15秒的超时,您可以在c++程序的第19-21行中更改这些。另外,如果您想让c++程序的终止更为直接,请在client_monitor_thread()的末尾调用exit()而不是return。在
希望这可能有用。在
Python脚本:import socket
import time
import psutil
import os
# check if the C++ program is running, start it if not
cppProgramName = "ConsoleApplication11.exe"
progRunning = False
for pid in psutil.pids():
p = psutil.Process(pid)