Re: Pipe ueber FIFO

Thomas Moritz <[email protected]> Sat, 9 Oct 2010 06:14:11 +0200
Newsgroups gmane.linux.suse.programming
Organization -
Message-ID <[email protected]>
Am Freitag, 8. Oktober 2010 22:13:50 schrieb Christian Boltz:

Hallo Christian,

> Am Freitag, 8. Oktober 2010 schrieb Thomas Moritz:
> > Am Freitag, 8. Oktober 2010 11:39:35 schrieb Thomas Moritz:
> > > Am Freitag, 8. Oktober 2010 07:44:43 schrieb Thomas Moritz:
> > Bevor David wieder was zu meckern hat... :-)
> > Den FIFO erzeuge ich jetzt aus Sicherheitsgruenden mit mktemp.
> > 
> > myfifo=$(mktemp myfifo.XXXXXX)
> > rm -f $myfifo
> > mkfifo $myfifo
> 
> Damit hast Du das Risiko immerhin auf eine race condition reduziert
> ;-) (jemand könnte theoretisch zwischen rm und mkfifo eine Datei
> oder einen Symlink anlegen)

Das ist zwar knapp, aber zumindest theoretisch moeglich.

> mktemp kann leider selbst keinen FIFO anlegen, aber es gibt eine
> sichere Lösung: mktemp -d und dann in diesem Verzeichnis mkfifo
> ;-) Außerdem solltest Du bei einem Fehlschlag das Script
> abbrechen.
> 
> Ungetestet:
>     mytempdir=$(mktemp -d meinscript.XXXXXX) || exit 1
>     mkfifo "$mytempdir/myfifo" || exit 1

Danke fuer den Tip!

> Zu Deinem eigentlichen Problem "Variablen sollen nach der Subshell
> noch verfügbar sein" brauchst Du übrigens nicht unbedingt einen
> FIFO. Es gibt verschiedene Varianten (Ausgabekanäle,
> "Verlängerung" der Subshell usw.) - siehe
> http://www.cboltz.de/de/linux/bash/

Oh man, Deine Seite habe ich sogar in den Lesezeichen!
Danke und ein schoenes Wochenende.

MfG Th. Moritz