Matthias Teege wrote:
> > fstat(1) kann dir da weiterhelfen.
Leider nicht, da es nicht die vollständigen Dateinamen
anzeigt. Mir ist keine halbwegs portable Möglichkeit
bekannt, mit der es möglich wäre; auch lsof tut's im
Falle von FIFOs nicht, zumindest nicht auf allen Platt-
formen.
> Mein Problem ist eigentlich, dass ich verhindern möchte, dass mehrere Leser
> an einer "named pipe" hängen.
In dem Fall wäre fstat oder lsof eh nicht verlässlich,
da Du Dir eine Race-Condition einhandelst.
Ich würde einfach eine separate Lock-Datei verwenden
z.B. per Symlink. Das ist portabel und kann auch in
Shell-Skripts gemacht werden. Da bei "ln -s" das
Prüfen des Vorhandenseins und das Anlegen eine atomare
Operation bilden, gibt es keine Race-Condition.
if ln -s $$ fifo.lock 2>/dev/null ; then
whatever < fifo
rm -f fifo.lock
else
echo "Da lauscht schon einer."
fi
Das funktioniert natürlich nur unter kooperierenden
Prozessen, die alle den gleichen Lock-mechanismus
verwenden.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd "Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another's code; too little and expressiveness is endangered." -- Guido van Rossum To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 28 Jan 2009 - 16:16:29 CET