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]