Programm darf nur einmal im Arbeitsspeicher laufen
-
Hallo Forum,
habe eine Schnittstelle und einen Interpreter für Zugriffe auf eine Datenbank(ASCII-Files) geschrieben. Die wird mittels eines Webbrowsers per CGI benutzt, um Daten zu editieren, loeschen,etc.
Das Problem ist, wenn die Anfragen kurz hintereinander geschickt werden, wird das CGI-Programm mehrfach gestartet. Es darf aber nur ein einziges Mal gleichzeitig laufen. HAbe im forum und in FAQ von mutex, semaphore und anderen Dingen gelesen, die mir alle nichts sagen. Kann mir jemand erklären, wie ich das Ziel erreichen kann? Arbeite auf Linux mit g++ compiler.
DAnke
arni
-
am besten hast du irgend wo eine Datei, die du mit flock(2) versuchst zu sperren. Wenn das nicht geht, weil die Datei bereits gesperrt ist, wartet die CGI, weil eine andere aktiv ist.
Das hat den Vorteil, dass die Datei automatisch entsperrt wird, wenn der Prozess stirbt und nicht dein CGI-System zusammen bricht.
-
@kingruedi
Danke, das ist wohl eine recht sichere möglichkeit, habe in den man-pages und im info gelesen, das die Sperrung bei Programmende (ob gewollt oder nicht gewollt) automtaisch beendet wird, was natürlich das handling vereinfacht.
Tschau
arni