簡體   English   中英

如何使用QProcess在Windows上包裝telenet.exe?

[英]how to use QProcess to wrap telenet.exe on Windows?

我正在嘗試使用QProcess編寫包裝類來在Windows上驅動CLI應用程序(例如telnet.exe,ftp.exe),但到目前為止還算不上成功。 你知道這是否有可能嗎?

以下是我在Windows 7上嘗試使用telnet.exe的代碼。我期望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"

調用ProcessWrapper :: start()之后,函數main()立即退出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM