os.fork ... externes Programm wird immer doppelt gestartet
Hallo, ich wurschtele gerade weiter an einem kleinen Programm zur Erstellung von Verkaufstexten für eBay (nutzt PyQt... ist hier aber kein PyQt-Problem). Nun wollte ich eine Hilfe-Funktion einbauen, bei der der Web-Browser Konqueror mit meiner HTML-Hilfedatei geöffnet wird. Der Aufruf der Sub führt aber immer zum zweifachen Start des Konqueror. Woran mag das liegen? Gruß Daniel ---- Code: . . import os from posix import execv . . . def helpContents(self): pid = os.fork() if pid == 0: status = execv("/usr/bin/konqueror",("--profile webbrowsing","eBayEd.html")) os.wait()
[ Daniel Hagemeister
Hallo,
ich wurschtele gerade weiter an einem kleinen Programm zur Erstellung von Verkaufstexten für eBay (nutzt PyQt... ist hier aber kein PyQt-Problem). Nun wollte ich eine Hilfe-Funktion einbauen, bei der der Web-Browser Konqueror mit meiner HTML-Hilfedatei geöffnet wird. Der Aufruf der Sub führt aber immer zum zweifachen Start des Konqueror. Woran mag das liegen?
Blöde Frage: Warum verwendest du nicht gleich das subprocess Modul? Das macht im Prinzip nichts anderes, funktioniert aber ;)
import os
from posix import execv
Wozu dieser import? os.execv gibts auch ...
def helpContents(self): pid = os.fork() if pid == 0: status = execv("/usr/bin/konqueror",("--profile webbrowsing","eBayEd.html")) os.wait()
import subprocess ... cmd = ['/usr/bin/konqueror', '--profile', 'webbrowsing', 'eBayEd.html'] process = subprocess.Popen(cmd) process.wait() -- Freiheit ist immer die Freiheit der Andersdenkenden. (Rosa Luxemburg)
Erstmal vielen Dank für den Tip mit "subprocess" und das Modul "webbrowser"! Werde mich mit beidem noch näher beschäftigen... Mein Problem ist vorerst auch gelöst... war allerdings doch ein Qt/PyQt-Problem: Ich hatte versehentlich die Sub mit dem Signal "activated()" statt mit "clicked()" verbunden. Mit "clicked()" klappt es... der Browser wird nur einmal gestartet. Gruß Daniel
participants (2)
-
Daniel Hagemeister
-
Sebastian Wiesner