我使用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