Systemaufrufe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Ich hoffe von euch hat jemand gvim installiert, das ist nämlich ein unheimlich guter Editor. Aber was mich an dem Ding auch neugierg macht, ist, das man den ganz normal aus einer Kommandozeile raus aufruft und dann kann man weiterarbeiten und auch das Terminal schließen. Und der läuft immer noch.

Kann mir mal jemand verraten, welche Technik dahintersteckt und ob das in Python realisierbar ist?

Hans
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi hans,

ich würde sowas, in Linux, mit nem kleinen vorgeschalteten Shellscript machen.

# Starten und endkoppeln
python programm.py &
disown %python


Gruß

Dookie
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Dookie hat geschrieben:ich würde sowas, in Linux, mit nem kleinen vorgeschalteten Shellscript machen.
Dookie, das ist es ja gerade was mich an der gvim - lösung so fasziniert. Nix Shellscript, Nix "&", es geht einfach so! Aber wie und warum?

Ich emfinde es als äußerst angenehm, wenn ich einen Editor mal eben so aus der Kommandozeile starten kann und diese anschließend sofort wieder frei ist.

Hans
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

hans hat geschrieben: Ich emfinde es als äußerst angenehm, wenn ich einen Editor mal eben so aus der Kommandozeile starten kann und diese anschließend sofort wieder frei ist.
Hans
Das geht natürlich auch mit Python-Mitteln. Sonst könnte man ja gar keine Serverdienste implementieren, die sollen sich ja auch nicht beenden, wenn die aufrufende Shell stirbt.
Hier mal der relevante Ausschnitt aus einem speziellen XMLRPC-Dienst, an dem ich arbeite.
Ist aber auch teilweise abgeschrieben... :oops:
Das mit stdout mußt Du natürlich anpassen..., und os und sys müssen importiert sein.

Code: Alles auswählen

    ...
    if '--daemon' in sys.argv:
        # turn server into a robust daemon
        # stolen from daemonize.py by Coy Krill (ckrill@qvlinc.com)
        if (not os.fork()):
            # get our own session and fixup std[in,out,err]
            os.setsid()
            sys.stdin.close()
            sys.stdout = open(os.path.join(logDir, 'NetSim.log.'+str(os.getpid())), 'w')
            sys.stderr = sys.stdout
            if (not os.fork()):
                # hang around till adopted by init
                ppid = os.getppid()
                while (ppid != 1):
                    time.sleep(0.5)
                    ppid = os.getppid()
            else:
                # time for child to die
                os._exit(0)
        else:
            # wait for child to die and then bail
            os.wait()
            sys.exit()
    # still alive? - hier geht's dann weiter mit dem normalen Code!
    ...

Viel Glück!

Jörg
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hui, das geht aber schon tief in die Eingeweide :shock:


Gruß

Dookie
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Starker Tobak!

Die wenigen blonden Haare die ich noch habe, werde ich mir am Wochenende dann auch noch ausraufen :( :cry:

Hans
Antworten