SSH 在 QProcess 中不起作用,但在控制台中起作用
Posted
技术标签:
【中文标题】SSH 在 QProcess 中不起作用,但在控制台中起作用【英文标题】:SSH don't work in the QProcess,but it works in the console 【发布时间】:2019-08-15 06:26:27 【问题描述】:我有这个代码:
QProcess* proc = new QProcess();
proc->start("cmd.exe");
proc->write("ssh\n");
proc->closeWriteChannel();
proc->waitForFinished();
QTextCodec *codec = QTextCodec::codecForName("IBM 866");
ui->textEditNormal->setText(codec->toUnicode(proc->readAllStandardOutput()));
ui->textEditError->setText(codec->toUnicode(proc->readAllStandardError()));
写在StandartError
:
'ssh' is not recognized as an internal or external command
如果我在cmd.exe
中重复所有内容,那么一切都很好
如何解决?
【问题讨论】:
也许 PATH 不是您所期望的?尝试使用 ssh.exe 的绝对路径 【参考方案1】:也许您应该等待进程启动后再写入。下面的例子做了类似的事情。我没有安装 ssh,所以我在我的 Windows 机器上发布了dir
。试试看吧。
#include <QApplication>
#include <QDebug>
#include <QTextBrowser>
#include <QProcess>
int main(int argc, char* argv[])
QApplication a(argc, argv);
auto process = new QProcess;
auto view = new QTextBrowser;
process->setWorkingDirectory("C:/Temp");
QObject::connect(process, &QProcess::readyReadStandardOutput, [process,view]()
auto output=process->readAllStandardOutput();
view->append(output);
);
QObject::connect(process, &QProcess::readyReadStandardError, [process,view]()
auto output=process->readAllStandardError();
view->append(output);
);
process->start("cmd.exe");
process->setProcessChannelMode(QProcess::MergedChannels);
process->waitForStarted();
process->write("dir\n");
qDebug() << process->error();
view->show();
return a.exec();
【讨论】:
以上是关于SSH 在 QProcess 中不起作用,但在控制台中起作用的主要内容,如果未能解决你的问题,请参考以下文章
JS 代码在我将其粘贴到控制台时有效,但在我的 React 应用程序中不起作用
窗口挂钩在 Windows 7 中不起作用,但在 Windows xp 中不起作用