Moin!
Welche Rolle spielt nun an dieser Stelle der Generator von yield?
Das muss man sich so vorstellen wie einen "Server", der als eigenständiges Programm läuft. Es handelt sich genau genommen eigentlich nicht um einen Array.
In der Bash könnte das so aussehen:
1. "Server"
#/bin/bash
mkfifo fifo
echo "1" > fifo;
echo "2" > fifo;
echo "EOT" > fifo;
rm fifo;
Der wird gestartet und gibt der Reihe nach 1 2 EOT in den FIFO Puffer (und hält dann jeweils an, weil der fifo nicht bereit für die nächste Eingabe ist)
Diese server.sh starte ich und schicke die in den Hintergrund.
fastix@trainer:/tmp$ ./server.sh &
[4] 17966
2. Jetzt die client.sh:
#/bin/bash
while [ "$row" != "EOT" ]; do
echo -n "gelesen: ";
read row < fifo;
echo $row;
done
starten und Ergebnis:
fastix@trainer:/tmp$ ./client.sh
gelesen: 1
gelesen: 2
gelesen: EOT
fastix@trainer:/tmp$ fg 4
bash: fg: Programm ist beendet.
[4]+ Fertig ./server.sh
Du hast nur halt keinen fifo (First-In-First-Out-Puffer) und C# erledigt das, wofür ich zwei Skripte anlegte, in einem Programm.
Jörg Reinholz