Mam kod, który używa QProcess w ten sposób.odczytać wynik QProcess na ciąg
int main(int argc, char *argv[])
{
int status=0;
QProcess pingProcess;
QString ba;
QString exec = "snmpget";
QStringList params;
params << "-v" << "2c" << "-c" << "public" << "10.18.32.52" << ".1.3.6.1.4.1.30966.1.2.1.1.1.5.10";
status=pingProcess.execute(exec, params);
pingProcess.close();
}
Daje następujące wyniki.
SNMPv2-SMI::enterprises.30966.1.2.1.1.1.5.10 = STRING: "0.1"
Chcę wziąć (przeczytać) to wyjście jako ciąg. Szukałem tego i nie mogę znaleźć rozwiązania. Z góry dziękuję.
Chociaż jest to poprawne, powinieneś wiedzieć, że jeśli proces generuje dużo wydruków, możesz otrzymać kilka wywołań do slotu readData przed zakończeniem procesu, więc musisz obsługiwać konkatenację danych i nadal poczekaj na sygnał zakończenia procesu. – TheDarkKnight
Prawda, connect (& pingProcess, SIGNAL (zakończone (int)), to, SLOT (handleProcessFinish (int); W ten sposób nie blokujesz przepływu (dodatkowo waitFofFinished ma 30 sekund domyślnego limitu czasu) – ariwez
Tak, ale 30 sekund to maksymalny czas oczekiwania, jeśli proces zakończy się wcześniej, to powróci. – TheDarkKnight