From: Christian Weisgerber (naddy_at_mips.inka.de)
Date: 30. Apr 2000
Raphael Becker <beckerra_at_rumms.uni-mannheim.de> wrote:
> Gibt es noch andere "Verbindungen" außer der Pipe, die ja die Daten
> von "links" nach "rechts" durchschaufelt?
Nö. Eine Pipe ist einfach ein Datenrohr zwischen zwei Prozessen.
Mit pipe(2) holt man sich eine, dann hat man zwei Enden in der
Hand. Nach einem fork(2) nimmt sich der Vater das eine, das Kind
das andere Ende, und nun kann der eine darüber Daten zum anderen
schicken. Mit dup2(2) kann man ein Ende der Pipe auf stdin/stdout
legen.
> Wie erfährt zB "links", daß "rechts" beendet wurde
Erhält ein SIGPIPE.
> oder umgekehrt?
Liest ein EOF.
> Ein "EOF" in der Pipe ist bei reinen Binärdaten eher unwahrscheinlich,
> oder?
EOF ist hier als abstraktes Dateiende zu verstehen. Unix reserviert
kein bestimmtes Zeichen um ein Dateiende zu signalisieren, stattdessen
liefert read(2) 0 zurück. Die Zugriffe auf Pipes funktionieren wie
bei normalen Dateien, nur dass keine Positionierung des Dateizeigers
mit lseek(2) möglich ist.
Genau solche Sachen sind in _APUE_ erklärt.
-- Christian "naddy" Weisgerber naddy_at_mips.inka.de
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET