본문 바로가기

QT/QT 4.6.2

간단한 ping 명령어 사용하기(QProcess::execute)

QProcess 클래스를 이용하여 ping 명령어를 사용해 보았다.

QProcess의 멤버 함수인 start() 함수를 사용하여 명령어 사용이 끝나면 시그널 / 슬롯으로

들어 오는 데이터를 보고
성공, 실패를 확인 하였다.

하지만 시그널 / 슬롯이 아닌 바로 그 결과를 알고 싶을 때 즉,

하나의 함수에서 실행을 시키고 실행 결과를 바로 알고 출력 주고 싶을 때는 바로 전에 구현 한 부분은

조금 문제가 되어 그 부분에 대해서 한번 찾아 보았다.

그 결과 QProcess::execute() 함수를 사용하면 리턴 값으로 바로 결과를 알 수 있다는 것을 알게 되었다.

먼저 소스를 보게 되면,

#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMessageBox *box = new QMessageBox;
    int res = -1;
    QStringList list;

    list << "66.249.89.99";

    res = QProcess::execute("ping", list);

    if(res == 0)
    {
        box->setText("ping success");
    }
    else
    {
        box->setText("ping failure");
    }

    box->show();

    return app.exec();
}


이렇게 구현을 하였다.

그럼 그 결과,

이렇게 출력이 되는 걸 확인 하였다.

간단하게 소스 분석을 하게 되면,

새롭게 보이는 부분은

  res = QProcess::execute("ping", list);

이 부분으로 QProcess::execute() 함수가 명령어를 실행을 하고 그 결과를 바로 res로 넘겨 준다.

그리고 res에서 저장된 값이 0이면 성공, 0 이외의 값은 실패로 된다.

참조 :
http://korone.net 의 서종범님의 댓글