Hallo, On Mon, 30 Jun 2003, Ralph Müller schrieb:
* David Haller
schrieb: [ Spannende Schilderung des Hintergrunds von Dateideskriptoren ] exec 3>/named_pipe_eins
Habe jetzt eine Weile experimentiert. Mit "normalen" Dateien funktioniert das bestens, nur ausgerechnet mit Named Pipes bei mir nicht:
Wenn ich exec 3>/named_pipe_eins in der Konsole eingebe (natürlich bei entsprechend existierender Named Pipe), dann kehrt der Prompt nicht zurück. [Suse 7.0, Bash 2.04.0(1)-release]
Bei mir geht das [SuSE 6.2, bash 2.03.0(1)-release]. dh@slarty[3]: /tmp/test4 (0)$ mkfifo named_pipe_eins dh@slarty[3]: /tmp/test4 (0)$ exec 3>./named_pipe_eins dh@slarty[1]: ~ (0)$ cat /tmp/test4/named_pipe_eins dh@slarty[3]: /tmp/test4 (0)$ echo 'Hallo Welt!' >&3 [im xterm mit dem cat] Hallo Welt! dh@slarty[3]: /tmp/test4 (0)$ exec 3>&- [im xterm mit dem cat] dh@slarty[1]: ~ (0)$ Wie sind bei dir die Rechte der "named pipe"? Hm. Bei mit klappt's jetzt auf einmal auch nicht mehr -- aber ich weiss wie's dann geht: Du musst dafuer sorgen, dass die Pipe auch gelesen wird (z.B. durch ein cat)... Dann kehrt das 'open' der Pipe, das beim 'exec 3>./named_pipe' ausgefuehrt wird auch zurueck und du bekommst deinen Prompt wieder.
Wenn ich ein "exec 3>/StinknormaleDatei" mache, und anschließend versuche der Bash mittels "rm /StinknormaleDatei" und "mkfifo /StinknormaleDatei" eine Pipe unterzujubeln, dann geht die Ausgabe von einem "echo HalloWelt 1>&3" irgendwo ins Nirvana.
Nein, die geht in /StinknormaleDatei, denn diese ist nachwievor von der bash geoeffnet. Erst wenn du in der bash mit exec 3>&- die Datei schliesst oder die bash beendest wird /StinknormaleDatei geloescht. Siehe 'man 2 unlink': unlink deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse. Entscheidend ist der Satz "and no processes have the file open". Achso: unlink ist die Systemfunktion, die letztlich verwendet wird (u.a. eben von 'rm'). -dnh -- Stimmt, MS-Benutzer zu verhohnepiepeln ist eigentlich so unwaidmaennisch wie tote Schafe zu treten. Trotzdem sehr angenehm wollig-warm im Tritt. -- Andreas Kabel am 16.05.2000 in dan-am