Seite 1 von 1

Linux: RunProgram und anderes Programm starten

Verfasst: 23.10.2007 22:19
von alen
Hallo Zusammen,

versuche mich gerade unter Linux mit der PB Version v4.01 und der RunProgram Funktion. Ich möchte während meiner Programmausführung (GUI) ein anderes Programm starten und in meiner Programmausführung nicht auf das andere Programm warten müssen.

Der aktuelle Aufruf passiert so (Als Beipiel einfach mal den vncviewer):

Code: Alles auswählen

 
RunProgram("vncviewer", "", "", #PB_Program_Open | #PB_Program_Read)
Jedoch wartet meine GUI immer auf das beenden des anderen Programmes. Ich könnte ein paar Anregungen gebrauchen wie man hier ansetzen könnte. Beispiele sind auch sehr willkommen.

Zwischendurch hatte ich auch mit CreateThread herumgespielt aber keinen Erfolg gehabt mangels guten Beispielen.

Grüße
Alen Hopek

Re: Linux: RunProgram und anderes Programm starten

Verfasst: 24.10.2007 12:49
von Little John
alen hat geschrieben:Jedoch wartet meine GUI immer auf das beenden des anderen Programmes
Ich habe das mal mit PB 4.10 Beta 3 unter Ubuntu 7.10 mit folgendem Progrämmchen getestet:

Code: Alles auswählen

RunProgram("vncviewer", "", "", #PB_Program_Open | #PB_Program_Read) 
MessageRequester("Info", "Ende meines PB-Programms")
IIn dieser Konstellation kann ich Dein Ergebnis nicht bestätigen, sondern der MessageRequester erscheint wie erwartet kurz nach dem Programmstart. Mein PB-Programm wartet nicht auf das Ende des VncViewers.

Ich vermute, dass das GUI Deines programmes wesentlich komplexer aufgebaut ist als mein kleines Programm. Berichte doch mal was passiert, wenn Du es bei Dir mit diesem Testprogramm probierst.

Gruß, Little John

Minimalprogramm ausprobiert

Verfasst: 24.10.2007 14:33
von alen
Hallo Little John,

ich habe die Minimal Version mal ausprobiert und es kommt zu einem seltsamen Ergebnis.

Nach dem Kompilieren wird weder das Programm gestartet noch die MessageBox angezeigt.

Es kommt nur ein: Executable gestartet unten in der Statusausgabe und das Programm wird nicht beendet. Es läuft ständig weiter aber ohne jegliche Ausgaben oder Fehler. Selbst wenn ich nur die erste Zeile mit RunProgram im Quelltext drin habe sieht es weiterhin so aus.

Interessant ist wenn ich so einen Aufruf in Verbindung mit meiner GUI mache wird das Programm "vncviewer" gestartet aber die Programmausführung geht nur weiter wenn ich den "vncviewer" beende.

Die Linux Version verhällt sich in dem Fall komplett anders als die Windows Version. Da funktioniert es wie man es erwartet.


Den Test habe ich mit folgenden Programmzeilen getestet:

Code: Alles auswählen

RunProgram("vncviewer", "", "", #PB_Program_Open | #PB_Program_Read)
MessageRequester("Info", "Ende meines PB-Programms")
System: Ubuntu 7.10 / Gnome Desktop / Purebasic v4.01

RunProgram

Verfasst: 24.10.2007 15:06
von alen
Hallo Little John,

ich habe nun ein wenig weiter experimentiert. Ich habe mir die Purebasic v4.10 Beta3 genommen und habe die Tests wiederholt. Und siehe da, es klappt auch so wie erwartet.

Auch aus meiner GUI heraus werden nun Programme im Hintergrund gestartet. Allerdings für meinen Anwendungsfall "rdesktop" muss ich in den Compileroptionen auf Console stellen, damit "rdesktop" auch wirklich gestartet wird. Sonst passiert irgendwie überhaupt nichts, keine Meldung, keine Fehler.

Im Fall Compileroption Console erscheint aber auch ein Konsolenfenster und man sieht dort dann die Ausgaben von "rdesktop". Wäre ja irgendwie netter wenn das zumindest ausgeblendet wäre. Die GUI ist dann aber trotzdem zu sehen. Sehr seltsam diese Konstellation.

Wann ist es eine Consolenanwendung und wann einer GUI nach Purebasic Definition ? Wo man es doch scheinbar auch mischen kann.

Grüße
Alen Hopek :allright:

Verfasst: 24.10.2007 21:31
von Little John
Hallo Alen,

dann hat es sich ja soweit geklärt, dass PB Version 4.01 für Linux die Ursache des Problems war.
Wie sich das mit der Linux-Konsole genau verhält kann Dir hoffentlich jemand anders erklären, ich leider nicht.

Gruß, Little John