yield return
bearbeitet von Jörg ReinholzMoin!
> 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.
In der Bash könnte das so aussehen:
{::nomarkdown}1.{:/} "Server"
~~~ sh
#/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
~~~
{::nomarkdown}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
yield return
bearbeitet von Jörg ReinholzMoin!
> 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.
In der Bash könnte das so aussehen:
{::nomarkdown}1.{:/} "Server"
~~~ sh
#/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 im hintergrund.
~~~
fastix@trainer:/tmp$ ./server.sh &
[4] 17966
~~~
{::nomarkdown}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
yield return
bearbeitet von Jörg ReinholzMoin!
> 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.
In der Bash könnte das so aussehen:
{::nomarkdown}1.{:/} "Server"
~~~ sh
#/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.
Diese server.sh starte ich im hintergrund.
~~~
fastix@trainer:/tmp$ ./server.sh &
[4] 17966
~~~
{::nomarkdown}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
yield return
bearbeitet von Jörg ReinholzMoin!
> 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.
Bash könnte das so aussehen:
1. "Server"
~~~ sh
#/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.
Diese server.sh starte ich im hintergrund.
~~~
fastix@trainer:/tmp$ ./server.sh &
[4] 17966
~~~
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