Principiante para ver truco: Crear un archivo de bloqueo bajo el sistema operativo Linux

  

En primer lugar, una visión general


Linux ofrece una variedad de características para implementar el bloqueo de archivos. La forma más sencilla es crear atómicamente archivo de bloqueo, la denominada "operación atómica" es cuando se crea el archivo de bloqueo, el sistema no permitirá que cualquier otra cosa que sucedió. Esto es para asegurar que el programa proporciona un archivo que crea es la singularidad de la forma, y ​​el archivo no se puede crear otros programas al mismo tiempo.


En segundo lugar, el método


archivo de bloqueo es más que actuar como un indicador de la necesidad de utilizar a través de la cooperación mutua entre los programas. El archivo de bloqueo es solo un bloqueo sugerente, y lo contrario es un bloqueo obligatorio.


para crear un archivo que se utiliza como un indicador que utilizamos con O_CREATE y O_EXCL signos de la llamada de sistema abierto. Esto nos permitirá hacer dos cosas al mismo tiempo con una operación atómica: asegúrese de que el archivo no exista y luego créelo.


En tercer lugar, para lograr

 //archivo: lock.c # i NCLUDE < unistd.h > #i NCLUDE < stdlib.h > < #i NCLUDE; stdio.h > #i NCLUDE < fcntl.h > #i NCLUDE < errno.h > int main () {int file_desc; int save_errno; file_desc = abierto ( "/tmp /LockFile.test", O_RDWR |
  O_CREAT |
  O_EXCL, 0444), si (file_desc < 0) {save_errno = errno; printf ( "Open falló con el error es% d \\ n", save_errno);} else {printf ( "Open logró \\ n");} de salida ( EXIT_SUCCESS);} 

primero ejecutar el programa:

$ bloquear

salida
es el siguiente:

Abrir logró


que ejecute el programa de nuevo:

$ bloquear

salida
es el siguiente:

Abrir se produjo el error es 17


análisis :

Al ejecutar el programa por primera vez, la ejecución se realizó correctamente porque el archivo no existía. Para ejecuciones posteriores, el archivo falló porque ya existe. Si desea que el programa se ejecute de nuevo correctamente, debe eliminar el archivo de bloqueo.


en un sistema Linux, por lo general el número equivocado 17 representa EEXIST, ya existe este error para indicar un archivo. El número de error se define en el archivo de encabezado errno.h o (más comúnmente) el archivo de encabezado que contiene.

Copyright © Conocimiento de Windows All Rights Reserved