在qt5.12.6中想使用QProcess类进行ssh连接,显示总是连接成功返回值为空,这个为什么?怎么解决?或者说应该怎么写?(已经在终端和用putty测试了ssh可以正常连接而且打印正常,都是root/)
编译输出结果如下:
[Krn64.dll][25024][25844][INFO] [ProcessInject::HookCreateProcessW] [NULL], [ssh root@192.168.234.100] is not cmd process, no need remote inject
QProcess::start: Process is already running
QProcess: Destroyed while process ("ssh") is still running.
Exit code: 62097
Exit status: QProcess::CrashExit
Output: ""
Error: ""
Process crashed. Error: "Process crashed"
subWidgetSwitched QMdiSubWindow(0x5be2600)

// 创建一个QProcess对象
QProcess process;
QStringList command;
process.setProcessChannelMode(QProcess::SeparateChannels);
command << "root@192.168.234.100" <<"pwd";
process.start("ssh", command);
if (process.waitForStarted())
{
process.closeWriteChannel();
QObject::connect(&process, &QProcess::readyReadStandardOutput, [&](){
qDebug() << "Output: " << process.readAllStandardOutput();
});
QObject::connect(&process, &QProcess::readyReadStandardError, [&](){
qDebug() << "Error: " << process.readAllStandardError();
});
// 异步等待命令执行完成
QObject::connect(&process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), [&](int exitCode, QProcess::ExitStatus exitStatus){
QByteArray result = process.readAllStandardOutput();
QByteArray error = process.readAllStandardError();
qDebug() << "Exit code:" << exitCode;
qDebug() << "Exit status:" << exitStatus;
qDebug() << "Output:" << result;
qDebug() << "Error:" << error;
if (exitStatus == QProcess::CrashExit) {
qDebug() << "Process crashed. Error: " << process.errorString();
}
});
}
else
{
qDebug() << "Failed to start the command.";
}