Re: Pipe ueber FIFO

Christian Boltz <suse-/[email protected]> Fri, 8 Oct 2010 22:13:50 +0200
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo Thomas, hallo Leute,

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)

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

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/


Gruß

Christian Boltz
-- 
Wozu überhaupt ein Script? Das kann man auch direkt aufrufen.
Immer dieser Rationalisierungswahn. Demnächst verlangen einige 
Gurus noch, dass direkt in Binärcode geschrieben wird...
[Sandy Drobic in suse-linux]