我正在使用 Qprocess 执行 ping 以检查主机是否在线...
问题是我从 Qprocess->finished 信号收到的退出代码始终为 2,无论我 ping 可访问的主机还是不可访问的主机。
我不断在 QTimer 中对主机进行 ping 操作(我已将其一个文件夹安装在运行 Qt 应用程序的客户端)...
当我在连接到 QProcess->finished 信号的插槽中捕获 ping 返回的退出代码时。我总是收到退出代码为 2 ..
我不能通过 system(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
无论是否 1.1.1.1 被 ping 或 1.1.1.11 在终端 1.1.1.1 是可 ping 且 1.1.1.11 不是 1.1.1.11 不是 1.1.1.1 被 ping 到模拟在线/离线主机,以便我的应用程序可以相应地运行)
任何输入都会有很大帮助..
谢谢。