* Kampe, Christoph schrieb am 22.Mai.2000:
Was ist eine "Named Pipe" und wie geht man damit um/legt sie an?
Linux kennt sieben grundsätzlich verschiedene Dateitypen. Normalerweise hat man normale Dateien (-) und Verzeichnisse (d) zu tun, auch symbolische Links (l) kommen häufiger vor. Es gibt aber auch noch Zeichenorientierte- (c) bzw. Blockorientierte (b) Grätedateien. Diese gibt es im Verzeichnis /dev. Darüberhinaus gibt es Sockets (s) und eben Named Pipes (p), auch fifo (first in, first out) genannt. Wenn man ls -l sagt, so steht das, was ich oben eingeklammert habe als ersten Buchstabe vor den Rechten. Named Pipes funktionieren ähnlich wie die normale Pipe | nur, daß sie halt einen Namen haben. Während die normale Pipe von einem Prozeß angelegt wird und nur von diesem oder seinen Erben benutzt werden kann, kann eine Named Pipe auch von nicht miteinander verwandte Prozesse benutzt werden. Named Pipes kann man mit mknod generieren. mknod FIFO p erzeugt die Named Pipe FIFO.
welche schönen weiteren Zwecke koennte man damit erfuellen?
Man kann in einer Named Pipe hineinschreiben und ein anderes Programm kann aus der Named Pipe lesen. Spaßeshalber kannst Du mal, nachdem Du wie oben FIFO angelegt hast less -f FIFO sagen. Von einem anderen Terminal aus, gibts Du dann etwas in FIFO ein. Z.B: echo "Hallo World" > FIFO oder aber auch cat /etc/passwd > FIFO und schon wird es auf dem ersten Terminal ausgegeben. Wichtig ist aber, daß man zuerst liest und dann schreibt, da ein schreibender Zugriff normalerweise dicht macht, nachdem alles hineingeschrieben wurde.
(oder: welcher Daemon macht das - bzgl der man-page)
Auf /dev gibt es z.B. eine Named Pipe namens xconsole. Manpage gibt es mit: man 4 fifo Im vierten Abschnitt der Man-Pages stehen Beschreibungen von speziellen Dateien, meißt Gerätedateien, aber auch fifos. PS: Ich habe die Zufallssignatur ganz ohne Named Pipe gemacht. Mein Signaturprogramm lautet: ------~/.sig/signatur------------------------------------------- #! /bin/bash ANZAHL=$(ls /home/brod/.sig/sig_*[0-9] | wc -l) SIGNATUR=$(($RANDOM % $ANZAHL)) cat /home/brod/.sig/sig_$SIGNATUR ------------------------------------------------------------------ Dabei wird in der ersten Zeile (ANZAHL=...) ermittelt, wieviele Signaturen es gibt. Die Signaturen heißen bei mir /home/brod/.sig/sig_0 bis /home/brod/.sig/sig_12. Wichtig ist, daß sie mit 0 beginnen und ununterbrochen bis zur letzten Zahl laufen. In der zweiten Zeile wird durch Zufall eine Signatur ausgewählt. Dabei steht $RANDOM für eine Zufallszahl zwichen 0 und 32767. Das % ist die mod-Funktion so wie in C. In der dritten Zeile letztendlich wird die Signatur auf Standardausgabe ausgegeben. im .muttrc steht: et signature=/home/brod/.sig/signatur| Wichtig ist das | am Ende. Das bedeutet, daß nicht die Datei selber als Signatur ausgegeben wird, sondern daß diese Datei ausgeführt wird und die Standardausgabe diesen Befehls als Signatur genommen wird. Es wird halt eine Pipe benutzt, aber keine Named Pipe. ;)) Funktioniert aber nur mit mutt. Mit kmail hat es auch mal funktioniert. Bekomme ich aber nicht mehr hin. Da ich es aber nicht benutze, versuche ich es aber auch nicht mehr es noch mal hin zu bekommen. Bernd -- Bitte die Etikette von Christian beachten: http://www.ndh.net/home/schult/ Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com