我正在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进程,甚至是那些由其他程序启动的进程。
你有什么想法解决这个问题吗?