我使用QProcess中執行ping命令檢查的主機在線或不...運行ping與QProcess中,退出代碼總是2,如果主機可達或不
的問題是退出代碼,我接收從Qprocess->完成信號總是2無論我ping一個可達主機或無法訪問一個..
我一直在一個QTimer ping主機(其中一個文件夾我已經安裝在客戶端, Qt應用程序正在運行)...
當我捕獲退出代碼作爲ping返回的插槽連接到QProcess->完成信號..我總是收到退出代碼爲2 ..
我不能使用通過系統(ping)直接系統調用,因爲它掛起我的應用程序的時間ping是活躍的... 我希望它是異步的,所以我切換到QProcess ...
下面是代碼片段:
//Pinging function called inside a timer with timout 1000
QString exec="ping";
QStringList params;
if(!dBool)
{
//params << "-c1 1.1.1.11 -i1 -w1;echo $?";
params <<" 1.1.1.11 -i 1 -w 1 -c 1";//wont ping
cout<<"\n\npinging 11 ie wont ping";
}
else
{
//params << "-c1 1.1.1.1 -i1 -w1;echo $?";
params <<" 1.1.1.1 -i 1 -w 1 -c 1";//will ping
cout<<"\n\npinging 1 ie will ping";
}
ping->start(exec,params);
// the slot that connects with QProcess->finished signal
void QgisApp::pingFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
cout<<"\n\nexitCode,exitStatus=="<<exitCode<<","<<exitStatus;//always 2,0!!
if(exitCode==0)
//if(dBool)
{
connectivity=true;
cout<<"\n\nONLINE";
}
else
{
connectivity=false;
cout<<"\n\nOFFLINE";
}
}
的
cout<<"\n\nexitCode,exitStatus=="<<exitCode<<","<<exitStatus
線總是給出2,0作爲輸出不管1.1.1.1被執行ping操作或1.1.1.11是在終端1.1.1.1上ping到 是可ping通的,並且1.1.1.11不是(我通過在keypress事件上設置的dBool標誌來模擬在線/離線主機,以便我的應用可以相應地運行)
任何輸入是一個很好的幫助..
謝謝。
相關:http://stackoverflow.com/questions/4629185/launch-and-write-to-terminal-in-qt – 2011-02-09 20:07:16