В qt я пытаюсь запустить следующую команду оболочки:
arp | grep -i 'test'
В настоящее время у меня есть следующий код:
QString Network::getMac(){
QProcess sh;
sh.start("sh");
sh.waitForStarted();
sh.write("arp -n| grep -i 'test'");
sh.closeWriteChannel();
sh.waitForFinished();
QString line= sh.readAll().replace("\n","").toLower();
return line;
}
Я хочу использовать Mac, например. подобно:
QString mac = objectOfClassThatHasTheFunction->getMac();
Он отлично работает, но проблема в том, что это занимает очень много времени и блокирует программу. Документы говорят waitForFinished Blocks until the process has finished and the finished() signal has been emitted, or until msecs milliseconds have passed.
Но как я могу вернуть результат без блокировки? Как мне запустить QProcess без блокировки, когда я хочу использовать результат?
Я могу ускорить процесс, используя arp -n, но я хочу узнать, как правильно использовать qprocess.