standardmäßig OS X (früher Mac OS X) Terminals erkennt EOF
wenn Ctrl - D am Anfang einer Zeile gedrückt wird.
Im Detail wird der eigentliche Betrieb ist, dass, wenn Ctrl - D gedrückt wird, werden alle Bytes in dem Eingangspuffer des Terminals sind an den laufenden Prozess gesendet, um den Terminal. Am Anfang einer Zeile befinden sich keine Bytes im Puffer, daher wird dem Prozess mitgeteilt, dass null Bytes verfügbar sind, und dies fungiert als Indikator EOF
.
dieses Verfahren als ein Verfahren verdoppelt sich für den Prozess vor dem Ende einer Zeile zu liefern: der Benutzer einige Zeichen eingeben kann und Ctrl drücken - D, und die Zeichen werden dem Prozess sofort gesendet werden, ohne das übliche Warten auf Enter/Return gedrückt zu werden. Nachdem die Operation "Alle gepufferten Bytes sofort senden" ausgeführt wurde, verbleiben keine Bytes mehr im Puffer. Also, wenn Ctrl - D ein zweites Mal gedrückt wird, ist es das gleiche wie der Anfang einer Zeile (keine Bytes gesendet werden, und der Prozess wird Null Bytes), und es verhält sich wie ein EOF
.
Sie können mehr über Terminal-Verhalten lernen, indem Sie den Befehl "man 4 tty" in Terminal verwenden. Die Standardzeilendisziplin ist Termios. Mit dem Befehl man termios
können Sie mehr über die Disziplin termios line erfahren.
https://discussions.apple.com/message/11198745#11198745 – Dave