例如,我们在windows上有两个可执行文件。(EXE_1.EXE、EXE_2.EXE(
EXE_1.EXE正在使用参数调用EXE_2.EXE。我想检测EXE_2何时关闭(终止、终止等(
我不能在C++中使用WaitForSingleObject,也不能在python中使用Psutil进程wait。因为它是在第一个可执行文件关闭时返回的。(记住:第一个exe启动第二个exe并关闭自己(
所以我需要一个函数,它被称为exes,被称为exe的pid或类似的东西。
我在c++中尝试了GetChildProcessID,它有效,但它返回CMD.exe的pid。这是好的,如果我检查这个cmd exe;当它关闭时,意味着我创建的第二个exe太关闭了。但我正在寻找第二个exe的pid。
info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = EmreWin32Con.SW_MINIMIZE
EXE = subprocess.Popen([EXE_KONUM], cwd=KLASOR_KONUM_EXE,
creationflags=subprocess.CREATE_NO_WINDOW,
startupinfo=info, stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
shell=False)
def GetChildProcessIDList(pid):
prc = psutil.Process(pid)
return prc.children(recursive=True)
Childrens = GetChildProcessIDList(EXE.pid)
isCmd = False
for chcmd in Childrens:
if chcmd.name() == "cmd.exe":
isCmd=True
Childrens.remove(chcmd)
break
# variable Childrens: list of process created process PID's.