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.
ich möchte gerne eine Eingabe(Tastataur) in der Kommandozeile machen und die nach einer vorgebenen Zeitspanne das Programm bzw. die Eingabe beendet.
Zur Zeit bin ich mir nicht sicher, ob ich es mit per Thread oder Timing oder auch ein einfacher spleep Aufruf helfen kann.
Hi,
Was genau willst du denn machen? Wenn du das Programm für eine Zeit nur einfrieren willst, kannst du sleep() nehmen. Vlt. ginge das auch mit ner Schleife, wo man die Zeit prüft und dann ggf. abbricht. Mit Threads wirds schwieriger, gige aber wohl. Kommt ganz auf das Ziel an.
Etwas Code schadet nie.
Gruß, jj
schlangenbeschwörer hat geschrieben:Hi,
Was genau willst du denn machen? Wenn du das Programm für eine Zeit nur einfrieren willst, kannst du sleep() nehmen. Vlt. ginge das auch mit ner Schleife, wo man die Zeit prüft und dann ggf. abbricht. Mit Threads wirds schwieriger, gige aber wohl. Kommt ganz auf das Ziel an.
Etwas Code schadet nie.
Gruß, jj
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
import fcntl, os, sys, time
class Timeout(Exception): pass
def read_timeout(timeout):
t = time.time()
fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
buff = ""
while time.time() < t + timeout and not buff.endswith("\n"):
try:
buff += os.read(sys.stdin.fileno(), 1)
except OSError:
pass
time.sleep(0.01)
fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, os.O_SYNC)
return buff
def main():
password = "swordfish"
print "Sie haben 10 Sekunden Zeit um das Passwort einzugeben, sollten"
print "sie es nicht schaffen wird sich dieses Programm vernichten"
if read_timeout(10).strip() != password:
print "b0000m"
else:
print "Geheim!"
print raw_input("Nichts kaputt? ")
if __name__ == "__main__":
main()
veers hat geschrieben:Geht das auch unter Windows?
Hallo veers!
Nicht wirklich: ``ImportError: No module named fcntl``
mfg
Gerold
...ich habe noch etwas rumprobiert und es mit dieser Lösung halbwegs geschafft. Die Ausgabe auf dem Bildschim muss ich noch unterdrücken. Aber es erfülltzumindest seinen Zweck und man kann es weiter ausbauen.