Directory als Schnittstelle zwischen zwei Prozessen

29/01/2012 - 12:37 von Marc Haber | Report spam
Hallo,

ich möchte gerne (in perl) ein SMS-Gateway bauen, das dieselbe
Schnittstelle wie die smstools verwendet. Allerdings soll die
Auslieferung der SMS nicht über ein lokal angeschlossenes GSM-Modem,
sondern über einen Webdienst erfolgen.

Die smstools-Schnittstelle basiert darauf, dass man eine
rfc822-àhnlich formatierte Datei in /var/spool/sms/outgoing ablegt.
smstools greift die Datei dann auf und verschickt sie.

Habe ich irgend eine (portable/elegante) Chance, festzustellen, dass
der schreibende Prozess mit der Datei fertig ist, damit mein Programm
mit der Bearbeitung der Datei fertig ist? Oder muss ich mich darauf
verlassen, dass der abliefernde Prozess sein File an andere Stelle im
selben Dateisystem schreibt und sie zum Schluß atomar nach
/var/spool/sms/outgoing mv'ed?

Grüße
Marc
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " | http://www.zugschlus.de/
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
 

Lesen sie die antworten

#1 Christoph Moench-Tegeder
29/01/2012 - 13:21 | Warnen spam
## Marc Haber <mh+:

Habe ich irgend eine (portable/elegante) Chance, festzustellen, dass
der schreibende Prozess mit der Datei fertig ist, damit mein Programm
mit der Bearbeitung der Datei fertig ist? Oder muss ich mich darauf
verlassen, dass der abliefernde Prozess sein File an andere Stelle im
selben Dateisystem schreibt und sie zum Schluß atomar nach
/var/spool/sms/outgoing mv'ed?



Das ist eigentlich der portable Weg (alternativ kann man den Zustand im
Dateinamen einbauen, z.B. durch vorangestellten Punkt). Schon mit etwas
mehr Gehampel verbunden ist Locking (flock() z.B.), das setzt aber noch
mehr Kooperation voraus als mv/rename(). Unter Linux gibt Dir inotify
noch die gewünschte Information, aber eben nur unter Linux.

Gruß,
Christoph

Spare Space

Ähnliche fragen