von Kommandozeile lesen/Abbruch nach bestimmter Zeit
Verfasst: 1. März 2009 14:23
Hallo.
Ich schreibe ein Frontend für ein Kommandozeilenprogramm (Streamripper). Bei jedem Start soll das Frontend die Versionsnummer von Streamripper überprüfen. Das geht mit dem Kommando "streamripper -v".
Allerdings kann in den Einstellungen des Frontends der Pfad zum Streamripper-Programm vom Benutzer frei eingestellt werden. Das heißt, er könnte auch so etwas unsinniges wie "gs" oder "mc" eingeben. In diesem Fall würde sich das aufgerufene Programm ja ohne weitere Eingaben nicht so schnell wieder beenden. Also hatte ich die Idee, das Programm im Zweifelsfall einfach mit QProcess::kill() nach Ablauf von 1 Sekunde abzubrechen.
Ein Abbruch nach einer festen Zeit hat aber einen großen Nachteil: Wenn der Computer beim Start des Frontends unter Volllast läuft (was z.B. dann wahrscheinlich ist, wenn das Frontend automatisch beim Anmelden gestartet wird), dann könnte die Ausgabe von Streamripper auf sich warten lassen, und zwar länger als 1 Sekunde. Wenn ich das Zeitlimit aber erhöhen würde (beispielsweise auf 30 Sekunden), dann müsste bei jedem Programmstart so lange gewartet werden, falls keine vernünftige Ausgabe von Streamripper zurückkommt.
Gibt es eine Möglichkeit, dem Streamripper-Programm einfach soundsoviele Prozessorzyklen zuzubilligen (unabhängig davon, wie lange das dauert), bevor es gekillt wird? Oder wisst ihr eine andere gute Lösung?
Tim
Ich schreibe ein Frontend für ein Kommandozeilenprogramm (Streamripper). Bei jedem Start soll das Frontend die Versionsnummer von Streamripper überprüfen. Das geht mit dem Kommando "streamripper -v".
Allerdings kann in den Einstellungen des Frontends der Pfad zum Streamripper-Programm vom Benutzer frei eingestellt werden. Das heißt, er könnte auch so etwas unsinniges wie "gs" oder "mc" eingeben. In diesem Fall würde sich das aufgerufene Programm ja ohne weitere Eingaben nicht so schnell wieder beenden. Also hatte ich die Idee, das Programm im Zweifelsfall einfach mit QProcess::kill() nach Ablauf von 1 Sekunde abzubrechen.
Ein Abbruch nach einer festen Zeit hat aber einen großen Nachteil: Wenn der Computer beim Start des Frontends unter Volllast läuft (was z.B. dann wahrscheinlich ist, wenn das Frontend automatisch beim Anmelden gestartet wird), dann könnte die Ausgabe von Streamripper auf sich warten lassen, und zwar länger als 1 Sekunde. Wenn ich das Zeitlimit aber erhöhen würde (beispielsweise auf 30 Sekunden), dann müsste bei jedem Programmstart so lange gewartet werden, falls keine vernünftige Ausgabe von Streamripper zurückkommt.
Gibt es eine Möglichkeit, dem Streamripper-Programm einfach soundsoviele Prozessorzyklen zuzubilligen (unabhängig davon, wie lange das dauert), bevor es gekillt wird? Oder wisst ihr eine andere gute Lösung?
Tim