2012-06-11 15 views
11

En un script bash en Linux, estoy usando rebaño [el rebaño de comandos, no el rebaño llamada al sistema()] para implementar el bloqueo de archivos que guarda con ello el acceso simultáneo contra un recurso compartido [que es un archivo en tmpfs].¿El lote se libera automáticamente al salir del proceso?

que tienen controladores de trampa para manejar la terminación anormal de mi guión: trap "{ rm -rf $LOCK ; rm -rf $TMPFS_FILE; exit 255; }" SIGINT SIGTERM

donde $ LOCK es mi archivo de bloqueo y $ TMPFS_FILE es mi recurso compartido.

Mi pregunta es ¿tengo que hacerlo explícitamente un archivo de desbloqueo así? ¿O Linux lo hace por mí en todos los escenarios de finalización de programa [terminación voluntaria así como forzada]?

+0

pregunta relacionada acerca de rebaño() en Python: http://stackoverflow.com/questions/3918385/flock- pregunta. –

+2

@CodeGnome, creo que se trata del comando 'flock', no del sistema' flock() ' – mkb

Respuesta

12

De 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. 
Cuestiones relacionadas