Socket Verbindung -Problem beim warten auf den Marker

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Black Panther
User
Beiträge: 27
Registriert: Samstag 11. Juni 2016, 19:09

@Sirius.... die Python Shell vom Raspberry Pi 2 Model B mit Betriebssystem Jessie. Ich glaube, dass mit dem Eingabespeicher kann ich am besten an einem Beispiel erklären. Wenn ich 4x raw_input und zwischen dem zweiten und dem dritten einlesen einen timeout und flush() setze, dann kann ich ja trotzdem EIngaben tätigen: (fortlaufend erscheint das im Terminal)
1. erster Input:1929218210
2. zweiter Input: 992398239
89239802898932 3.dritter Input: 982939828932
4.vierter Input: 929923289


"89239802898932" wurde von mir während des timeouts eingegeben. Der dritte INput schiebt sich an das Ende der EIngabe und "ignoriert"quasi das davor. Meine nicht fachliche Beschreibung liegt aber fehlenden Verständnis für die Funktion...aber sie erfüllt das was ich erwartet habe.

LG
Black Panther
BlackJack

@Black Panther: Ja, Du kannst Eingaben tätigen, aber die werden aus dem Eingabepuffer des Terminals *gelöscht*. Was *angezeigt* wird, ist noch einmal etwas völlig anderes. Wenn Du den Puffer löschst, dann hat das keinen Einfluss auf die Anzeige des Terminals. Das wäre auch schwierig, denn dann müsste das Terminal sich ja jede Änderung merken, oder zumindest ein “diff“ davon um das rückabwickeln zu können. Du betrachtest da nur ein paar Ziffern, und denkst die können einfach entfernt werden. Ja könnten sie, aber Du kannst während der Wartezeit ja auch zig mal die Eingabetaste drücken, so dass der ganze Terminalinhalt nach oben raus gescrollt wird. Das liesse sich nicht mehr so einfach rückgängig machen. Das geht auch ein bisschen über den Aufgabenbereich eines Terminals hinaus.

Wenn von `sys.stdin` keine Dateinummer abgefragt werden kann, dann handelt es sich bei dem Objekt nicht um eine Datei im Betriebssystem-Sinn und damit auch ganz sicher nicht um ein Terminal. Das ist in der Regel in IDEs der Fall wo die Eingabe aus einem Fenster oder Texteingabefeld kommt. Man muss das schon auf der Linux-Konsole oder einem Terminal-Emulator wie ``lxterm`` aus starten damit `sys.stdin` mit einem (Pseudo)Terminal verbunden ist.
Antworten