Seite 1 von 1

QProcess liest nicht alle Ausgaben des Prozesses

Verfasst: 10. März 2009 15:42
von michibr
Hallo!

Ich habe folgendes Problem mit QProcess.
Ich möchte ein Backup-Programme für Ubuntu erstellen.
Zu diesem zweck sollen mit dpkg --get-selections die installierten Pakete ausgelesen un in einer Textdatei gespeichert werden.
Hier mein Code:

Code: Alles auswählen

.
.
.
lst_packages = new QFile("list_packages.txt");	
		lst_packages->open(QFile::WriteOnly | QFile::Truncate);
		
		packages = new QProcess();
		packages->start("dpkg", QStringList() << "--get-selections");
		connect (packages, SIGNAL(readyReadStandardOutput()),this,SLOT(read_process()));
		}}	
}

void savWidget::read_process()
{
	QByteArray line;
	line = packages->readLine();

	QString output(QString::fromLatin1(line));
	
	
		QTextStream stream_packages(lst_packages);
		stream_packages << output;
}
nun habe ich hier das Problem, dass nicht alle Ausgaben des Prozesses in die Textdatei geschrieben werden. Beim Vergleich, wenn ich den Befehl in der Konsole ausführe werde alle Pakete von A-Z angezeigt.
In der Textdatei stehen meist nur die Pakete mit den Anfangsbuchstaben A-C,F oder maximal G.
Ich habe das Gefühl, dass der Prozess irgendwann abgebrochen wird.
Denn wenn ich nur nach Paketen mit z.B. A* suche werden alle gelistet.

Ein Fehler wird allerdings nicht vom Prozess ausgegeben...

Weiß hier jemand Rat?

Idee

Verfasst: 21. März 2009 17:51
von st0ff
Hi,

also ich hätte 2 Ideen, wobei die erste wohl eher unwichtig ist...
1.) es kommen auch Ausgaben über stderr -> könnte sein, dass du diese so nicht bekommst
2.) readline() könnte dein Problem sein. Ich würde es eher mit QByteArray QProcess::readAllStandardOutput () probieren ...

Hoffentlich hilfts,
St0fF

Verfasst: 22. März 2009 20:39
von michibr
Danke!
Hinweis 2 mit readAllStandardOutput() war die Lösung!!