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
Systemaufrufe
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
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?Dookie hat geschrieben:ich würde sowas, in Linux, mit nem kleinen vorgeschalteten Shellscript machen.
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.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
Hier mal der relevante Ausschnitt aus einem speziellen XMLRPC-Dienst, an dem ich arbeite.
Ist aber auch teilweise abgeschrieben...
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