Как использовать QProcess для упаковки telenet.exe в Windows?

Я пытаюсь закодировать класс-оболочку, используя QProcess для управления приложениями CLI (например, telnet.exe, ftp.exe) в Windows, но пока безуспешно. Вы знаете, возможно ли это?

Ниже приведен код, который я использовал, чтобы попробовать telnet.exe в Windows 7. Я ожидал, что этот код выведет «приветственное сообщение» после подключения telnet к серверу, но ничего не распечатывается (из стандартного вывода или вывода ошибок).

#include <QCoreApplication>
#include <QProcess>
#include <iostream>

class ProcessWrapper :public QObject
{
Q_OBJECT

public:
ProcessWrapper();
~ProcessWrapper();
void start();

public  slots:
void readStandardError();
void readStandardOutput();

private:
QProcess *process;
};

ProcessWrapper::ProcessWrapper()
{
process = new QProcess(this);
connect(process, SIGNAL(readyReadStandardError()), this, SLOT(readStandardError()));
connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandardOutput()));
}

void ProcessWrapper::start()
{
if(process) {
process->start("telnet.exe",QStringList() << "135.251.142.36");
process->waitForStarted();
}
}

ProcessWrapper::~ProcessWrapper()
{
if(process) delete process;
}

void ProcessWrapper::readStandardOutput()
{
if(process) {
QByteArray s = process->readAllStandardOutput();
QString str(s);
std::cout << str.toStdString();
}
}

void ProcessWrapper::readStandardError()
{
if(process) {
QByteArray s = process->readAllStandardError();
QString str(s);
std::cout << str.toStdString();
}
}

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

ProcessWrapper p;
p.start();

return a.exec();
}

#include "main.moc"

0

Решение

Функция main () завершается сразу после того, как вы вызвали ProcessWrapper :: start ().

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]