Ich dachte aber zugegeben auch, das Problem entstünde beim schließen des Terminals.
Achso! Ja, tatsächlich, und dann hilft auch kein „nohup
“. Aber Barabbas’ Variante. Okay, ich bin ent-wundert.
(Note to self: Lesen)
![]() Anmeldungsdatum: Beiträge: 2510 |
|
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 4101 |
Das Programm läuft technisch sehr wohl unter Windows, darauf habe ich geachtet. Ich kenne nur keine betriebssystemunabhängige Lösung, um beliebige Dateien (sowohl beliebig vom Dateityp als auch von der Anzahl) unter jeder erdenklichen Platform öffnen zu können. Und zwar am liebsten auch noch mit den vom User festgelegten Standardprogrammen.
Was genau darf ich unter "so ein Srkipt" verstehen? Niemand ausser mir hier kennt den Rest des Programmes ☺
Da muss ich dir zustimmen, os.system() bereitet für gewöhnlich nur Probleme bzw. es gibt meist bessere Lösungen.
Wenn ich das ganze mit totem, vlc, etc. mache funktionierts (war aber auch ohne "shell=True" schon so). Bei xdg-open hingegen schließt sich das Fenster wieder, wenn das Python-Programm beendet wird. Faszinierend... Hab testweise auch mal "&" bzw. "&!" hintendrangehängt. Trotzdem schließt sich das Fenster, wenn das Python-Programm beendet wird. mfg |
![]() Anmeldungsdatum: Beiträge: 1651 Wohnort: Münster |
import subprocess subprocess.Popen("nohup totem", shell=True) Ich habe es gerade mal probiert - ist bei mir auch so. Dafür geht es mit der Doppel-Fork-Methode. lG brb //edit: #!/usr/bin/env python # coding: utf-8 import sys import os def simpleDaemon(func): # do the UNIX double-fork magic, see Stevens' "Advanced # Programming in the UNIX Environment" for details (ISBN 0201563177) try: pid = os.fork() if pid > 0: # parent process, return and keep running return except OSError, e: print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) os.setsid() # do second fork try: pid = os.fork() if pid > 0: # exit from second parent sys.exit(0) except OSError, e: print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) # do stuff func() # all done os._exit(os.EX_OK) simpleDaemon(lambda: os.system("xdg-open ~/arbeitgeber.png")) |
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Also bei mir bleiben Dateien, die ich mit |
![]() Anmeldungsdatum: Beiträge: 1651 Wohnort: Münster |
Kann ich für gedit bestätigen, für bspw. eog aber nicht. |
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Dann hat das mit großer Wahrscheinlichkeit was damit zu tun, welche Desktopumgebung genutzt wird und welchen Fallback |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 4101 |
Hm, das ist interessant. Bei mir zeigen sich leider keine Unterschiede. Auch gedit und eog schließen sich, wenn das Programm sich beendet. |
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Naja, |
![]() Anmeldungsdatum: Beiträge: 1651 Wohnort: Münster |
Hast du denn jetzt mal die Sache mit den Doppelforks probiert? |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 4101 |
Nein, bisher noch nicht. Nimms mir nicht übel - die Idee ist genial - aber es muss auch ohne Doppelfork gehen. Ich dachte eigentlich (jedenfalls anfangs), dass ein nohup mit xdg-open all meine Probleme zu dem Thema löst. Was es ja offensichtlich nicht macht.
Wenn das Backend wieder abhängig von der Desktopumgebung ist, dann ist das schon ein wenig mies. Dann nehm ich doch lieber die Doppelforkmethode ☺ Muss mir dazu aber erstmal xdg-open genauer ansehen. mfg |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 4101 |
Nur zur Info: Ich hab jetzt die Lösung mit dem Doppelfork übernommen. Allerdings bin ich damit nicht wirklich zufrieden. "nohup" existiert ja nicht umsonst... Ausserdem funktioniert das mit dem Doppelfork IMHO nur auf POSIX-kompatiblen-Betriebssystemen (oder nicht?) mfg |
Anmeldungsdatum: Beiträge: 29240 Wohnort: Germany |
Unvollständig zitiert:
Ich wusste es doch: Linuxer töten kleine Kinder! 😲 🐸 SCNR - und sorry für das Ausgraben des alten Themas... 😉 Grüße, Benno |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 4101 |
|
Anmeldungsdatum: Beiträge: 29240 Wohnort: Germany |
Macht nix, dann lad ich mir irgendein Linux, Unix, ReactOS, Haiku oder Kolibri OS (Assembler) runter. 😉 |