Warum benötigt ein Befehlszeilenprogramm eine Benutzereingabe, wenn es nicht im Quellcode angegeben ist?

484
George

Warum würde ein Programm, das von der Befehlszeile aus ausgeführt wird, auf eine Benutzereingabe warten (Drücken der Eingabetaste), wenn es nicht dafür programmiert wurde?

Ich habe eine AWS EC2-Instanz verwendet, um ein rechenintensives Programm auszuführen, das einige Aufgaben ausführt. Dazu gehören das Lesen von Dateien, das Ausführen von Berechnungen zum Dateiinhalt und das Erstellen neuer Dateien. Für jede Aufgabe druckte das Programm einige Debug-Informationen an stdout.

Nachdem er ein paar Schritte durchlaufen hatte, schien er an einer massiven Berechnung hängen geblieben zu sein. Das Programm war nicht zu lange fortgeschritten, und die Ressourcennutzung war zu Beginn des Schrittes vom stabilen Niveau abgefallen. Ich Enterwar frustriert und es ging sofort weiter.

  • Ich wurde nicht zur Eingabe aufgefordert
  • Der Autor versicherte mir, dass eine Eingabepause nicht im Quellcode enthalten war
  • Ein Zufall ist angesichts der Fakten sehr unwahrscheinlich

Ist dies ein Systemfehler / ein Fehler / eine Funktion ?

Warum könnte es passieren und kann ich das in Zukunft vermeiden?

0
Vielleicht eine Debug-Funktion, die der Autor des Programms vergessen hat zu löschen. Oder es könnte ein anderes Programm sein, das von innen aufgerufen wird. Es würde einen Scan des Quellcodes erfordern, um herauszufinden, was. harrymc vor 6 Jahren 0
Was @harrymc gesagt hat. Der Entwickler sollte versuchen, den Fehler neu zu erstellen, anstatt ihn einfach aus der Hand zu geben. music2myear vor 6 Jahren 0
"Der Autor versicherte mir, dass eine Eingabepause nicht im Quellcode enthalten war" - Apple sagte, es sei nicht möglich, die Antenne eines älteren iPhone-Modells zu blockieren, bevor es tatsächlich passierte, und schließlich wurde das Telefon neu gestaltet. Der Punkt, die Leute lügen, und leider kann man das nicht bestätigen. Ramhound vor 6 Jahren 0
Ist es nicht wahrscheinlicher, dass auf die Eingabeaufforderung geklickt wurde und die Ausgabe angehalten wurde, wurde sie durch die Eingabe fortgesetzt. Als Beispiel. Wenn Sie eine Eingabeaufforderung öffnen und etwas ausführen, z. B. `ping www.google.com -t`. Wenn Sie auf das Fenster klicken, wird die Ausgabe angehalten, bis Sie eine Taste wie die Eingabetaste drücken. HelpingHand vor 6 Jahren 0
@HelpingHand Das hört sich nach einer tragfähigen Ursache an! Ich werde versuchen, das nächste Mal zu reproduzieren, wenn ich die Chance habe. Ich denke, Sie können dies als Antwort einreichen, ich werde es akzeptieren / mehr Feedback geben, nachdem ich es ausprobiert habe. George vor 6 Jahren 0

1 Antwort auf die Frage

1
HelpingHand

Die Windows-Eingabeaufforderung (cmd.exe) verfügt über den Modus "Schnellbearbeitung", der standardmäßig aktiviert ist.

Schnellbearbeitungsmodus

Wenn der Modus "Schnellbearbeitung" aktiviert ist, klicken Sie während der Aktualisierung auf die Eingabeaufforderung, z. B. wenn Sie einen Befehl ausführen, z.

ping www.google.com -t 

Die Aktualisierung der Ausgabe wird angehalten, bis ein Schlüssel eingegeben wird, z. B. die Eingabetaste im Fall der Frage.

In der Tat scheint dies die Ursache meines Problems gewesen zu sein. Ich muss auf das Terminalfenster geklickt haben, um zu sehen, ob es noch läuft und in den Schnellbearbeitungsmodus geraten ist. George vor 6 Jahren 1