2012-06-11 1 views
11

In einem Bash-Skript unter Linux verwende ich flock [den Befehl flock, nicht den Systemaufruf flock()], um die Dateisperrung zu implementieren und dadurch den gleichzeitigen Zugriff auf eine freigegebene Ressource zu schützen [dies ist eine Datei in tmpfs].Wird Flock am Prozessausgang automatisch freigegeben?

Ich habe Trap-Handler Bricht mein Skript zu behandeln: trap "{ rm -rf $LOCK ; rm -rf $TMPFS_FILE; exit 255; }" SIGINT SIGTERM

wo $ LOCK ist meine Lock-Datei und $ TMPFS_FILE ist meine gemeinsame Ressource.

Meine Frage ist, muss ich auch explizit eine Datei entsperren? Oder macht es Linux für mich bei allen Programmabkündigungen [sowohl freiwillige als auch erzwungene] Szenarien?

+0

Verwandte Frage zu flock() unter Python: http://stackoverflow.com/questions/3918385/flock- Frage. –

+2

@CodeGnome Ich denke das ist der Befehl 'flock', nicht der Systemaufruf' flock() ' – mkb

Antwort

12

Von man 1 flock:

-u, --unlock

  Drop a lock. This is usually not required, since a lock is 
      automatically dropped when the file is closed. However, it may 
      be required in special cases, for example if the enclosed com‐ 
      mand group may have forked a background process which should not 
      be holding the lock.