kostenloser Webspace werbefrei: lima-city


Script per Kommandozeile beenden.

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    matt3o12

    matt3o12 hat kostenlosen Webspace.

    Hallo, ich versuche meine Python-Script vorzeitig abzubrechen. Das besondere ist, er läuft in der Kommandozeile in einer endlos While. Mit PyGame (was ich einmal als GUI missbraucht habe, hatte ich einfach folgendes geschrieben habe:
    for e in pygame.event.get():
    				if e.type == QUIT: 
    					quiteGame = True
    					break

    In der Python lib habe ich nichts vergleichbares gefunden.
    Ich möchte auf folgende Events den Code abbrechen:
    Mit dem drücken von mit strg-D und von kill <pid> Befehl. (Bei dem Kill Befehl bekomme ich nur Terminated: 15. Ich will allerdings selber noch 3 Code Zeilen ausführen...)

    Ich hoffe ihr könnt nachvollziehen was ich will... Es ist eben nicht gut, wenn man übest müde ist und noch ein Beitrag schreiben will.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich habe Schwierigkeiten dein Problem zu verstehenaber ich rate mal in die Glaskugel:

    Ausführen einer Funktion bei Programmende:

    http://docs.python.org/library/atexit.html#module-atexit

    Beitrag zuletzt geändert: 24.3.2012 1:30:47 von fatfox
  4. Wenn du auf ein kill-event reagieren willst, solltest du Signal-Handler benutzen:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import signal, sys
    import time #for sleep
    
    def myHandler( signal, stackframe ):
    	print( "Signal handler was called",)
    	sys.exit( 0 )
    
    signal.signal( signal.SIGTERM, myHandler )
    
    while True:
    	time.sleep( 5 )

    http://docs.python.org/py3k/library/signal.html#signal.alarm

    Beitrag zuletzt geändert: 24.3.2012 7:57:38 von bladehunter
  5. Autor dieses Themas

    matt3o12

    matt3o12 hat kostenlosen Webspace.

    @bladehunter: Ok. Danke.
    Ich habe gemerkt, dass, wenn ich Strg+C drücke der Script einen KeyboardInterrupt Exception wirft.
    Ich habe nur an Strg+D gedacht, da man so den $ python Kommandozeile beenden kann.
  6. matt3o12 schrieb:
    @bladehunter: Ok. Danke.
    Ich habe gemerkt, dass, wenn ich Strg+C drücke der Script einen KeyboardInterrupt Exception wirft.
    Ich habe nur an Strg+D gedacht, da man so den $ python Kommandozeile beenden kann.

    Unter Linux sendet ctrl+c ein SIGTERM (Code 15) an ein Programm. Python-Programme fangen dieses Signal aber auf und machen eine Exception draus. Ein normales kill auf der Kommandozeile (was auch ein SIGTERM sendet) funktioniert aber.

    Und ctrl+d steht keineswegs für "Programm beenden", sondern für "Ende der Datei". Dein Python-Interpreter ließt von einer Pseudo-Datei names Standard-Input. Und dieser Standard-Input sind eben deine Eingaben oder eine andere Datenquelle. Wenn du jetzt ctrl+d drückst, legst du fest, dass an dieser Stelle die Datei zuende ist und der Python-Interpreter weiß dann, dass er fertig ist mit Code einlesen.

    Und wenn du sagst
    python meinscript.py

    Dann liest der Python-Interpreter meinscript.py und nicht den Standard-Input. Und auch meinscript.py hat natürlich irgendwann ein Dateiende.

    Beitrag zuletzt geändert: 24.3.2012 14:53:41 von bladehunter
  7. Autor dieses Themas

    matt3o12

    matt3o12 hat kostenlosen Webspace.

    bladehunter schrieb:
    matt3o12 schrieb:
    @bladehunter: Ok. Danke.
    Ich habe gemerkt, dass, wenn ich Strg+C drücke der Script einen KeyboardInterrupt Exception wirft.
    Ich habe nur an Strg+D gedacht, da man so den $ python Kommandozeile beenden kann.

    Unter Linux sendet ctrl+c ein SIGTERM (Code 15) an ein Programm. Python-Programme fangen dieses Signal aber auf und machen eine Exception draus. Ein normales kill auf der Kommandozeile (was auch ein SIGTERM sendet) funktioniert aber.

    Und ctrl+d steht keineswegs für "Programm beenden", sondern für "Ende der Datei". Dein Python-Interpreter ließt von einer Pseudo-Datei names Standard-Input. Und dieser Standard-Input sind eben deine Eingaben oder eine andere Datenquelle. Wenn du jetzt ctrl+d drückst, legst du fest, dass an dieser Stelle die Datei zuende ist und der Python-Interpreter weiß dann, dass er fertig ist mit Code einlesen.

    Und wenn du sagst
    python meinscript.py

    Dann liest der Python-Interpreter meinscript.py und nicht den Standard-Input. Und auch meinscript.py hat natürlich irgendwann ein Dateiende.


    Ahhh! Vielen Danke!
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!