2016-05-13 18 views
0

Ich habe eine Bibliothek, die als Kommandozeilen-Programm ausgeführt wird. Ich möchte eine Sperre dem Benutzer die Möglichkeit der Einrichtung geben, damit das Kommandozeilen-Programm nicht zweimal ausgeführt werden kann - das ist - wenn er startet, kann es nicht wieder ausgeführt werden, bis es fertig ist, von einer beliebigen Terminal-Sitzung .Plattformunabhängige Systemsperre für Kommandozeilen-Programm

Das Schloss sollte auf ein System angemeldet für jeden Benutzer arbeiten - ich nehme an uns auf einer Datei eine atomare Operation verwenden, aber welche Art von Operation wäre das? Es muss ausfallsicher sein. Der Benutzer der Lage wäre, das Schloss mit einer Option --force außer Kraft zu setzen, im Fall eines Fehlers.

Alle Ideen, wie dies zu implementieren, ohne Software Dritter einrichten zu müssen?

Mögliche Implementierung: Die einfachste Möglichkeit wäre, eine Datei in das Dateisystem zu schreiben und sie beim Programm-Exit zu löschen. Jedes Programm, das in der zweiten kommt, wird versuchen, die gleiche Datei zu schreiben und einen EEXIST Fehler.

Antwort

1

Versuchen Sie, die Lock-Datei in einigen gemeinsam genutzten Bereich zu erstellen und überprüfen, ob es Ausfahrt vor

auch sicherstellen, dass die Erlaubnis geteilt auf das Löschen von Dateien in das Start sind nur für eine Gruppe von Administratoren

Verwandte Themen