Am Sonntag, 17. Februar 2002 17.46 schrieb Thorsten Haude:
Moin,
* Ralph Müller
[02-02-17 17:04]: Mich würde mal interessieren wie dieser Pipe-Mechanismus "intern" aussieht.
Das läuft nur im RAM ab. Der eine Prozess schreibt in die Pipe, der andere liest daraus. Da wird im Kernelspeicher vermutlich erwas gepuffert, der Rest spielt sich aber in den beiden Prozessen ab.
Wenn sehr viele Daten von einem zum nächsten Programm übergeben werden dann müßte dem Kernel doch eigentlich gar nichts anderes übrig bleiben als mal kurz eine temporäre "Zwischendatei" anzulegen? Schließlich ist auch der größte Arbeitsspeicher irgendwann mal "aufgebraucht". Oder? Aber macht er das auch bei wenig Daten?
Das ist nicht nötig, weil die Daten 'sofort' vom zweiten Prozess verbraucht werden.
Pipes werden normalerweise auf ca. 4KB Grösse begrenzt. IIRC gibt es da sogar ein define in irgendeiner Header Datei. Die Grösse kann wahrscheinlich auch irgendwo in den Kernel Quellen festgelegt werden. Wenn nämlich der Daten verarbeitende(lesende) Prozess langsamer als der Produzierende(schreibende) ist, würde irgendwann der Speicher knapp. -- Grüsse Urs Registered Linux-User: #248694