QProcess使用批处理脚本启动plink.exe但是杀死QProcess并不会停止PLink

时间:2016-04-13 12:52:01

标签: c++ windows qt batch-file qprocess

我正在Qt开发一个应用程序。

首先,我创建了一个QProcess对象:

 @echo off
 echo y | "%~dp0/plink.exe" %1 -L %2

脚本看起来像这样:

 QString write = "0x01";               
 process->write(write.toLatin1());
 //  process->terminate(); i tried this too 
 process->close();
 //  process->kill();  i tried this too 

我得到了seesionID,一切似乎都没问题,但是当我想结束这个会话并打开一个新会话时,会出现问题。

我尝试用以下方法杀死进程:

process->pid(); // here would be shown some id 0x875f50c8
process->processId(); // here would be shown some id 4936
process->close();
process->pid(); // here would be shown some id 0x0
process->processId(); // here would be shown some id 0

该进程被终止,但PLINK.exe仍在运行(我在Windows任务管理器中看到它),并且每个新会话都会创建另一个正在运行的实例。

从应用程序中,我只能接受QProcess的pid,而不是plink本身:

taskkill /im plink.exe

此代码显示QProcess已成功关闭,但plink仍然存在。

一个选项是创建另一个脚本,该脚本将终止名为" PLINK"的所有进程。它看起来像这样:

<div class="form-group mbs"> <label for="password" class="label-medium mbxs">Password</label><br> <input type="password" name="password" class="form-control input-medium" required> </div> <div class="form-group mbs"> <label for="passwordConfirm" class="label-medium mbxs">Password Confirm</label><br> <input type="password" name="passwordConfirm" class="form-control input-medium mbs" required><br> <a href="" id="generate-password" class="btn btn-large btn-green-gradient">Generate Password</a> <a href="" id="show-password" class="btn btn-large btn-red-gradient">Show/Hide Password</a> </div>

不幸的是,通过运行它,我会杀死所有plink进程,甚至是那些由其他程序启动的进程。

你有什么想法解决这个问题吗?

0 个答案:

没有答案