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.
Ext2Fsd es una buena herramienta para leer y escribir particiones de Linux. Este software se prese
El shell de Linux tiene su propio conjunto de sentencias de control de flujo, incluidas sentencias
Linux Mint es una distribución basada en Ubuntu que tiene como objetivo proporcionar una experiencia
Ubuntu Como el sistema operativo Linux más popular, Ubuntu se ha vuelto aún más perfecto después del
Notas de instalación del entorno Linux Centos lnamp
Cómo elegir un entorno de escritorio Linux
Tres pasos para enseñarle cómo crear una unidad flash de Linux
Instalación del código fuente de Linux apache + mysql + php5 y varios foros instalados
Comando Linux mv: mover un archivo o directorio El comando
Windows 7 y el método de instalación del sistema dual de Fedora
Sistema de auditoría de espacio de usuario de Linux
Comprensión de los diversos parámetros de dirección involucrados en los núcleos uBoot y Linux
Win10 versión preliminar 9860 Skype no carga cómo reparar
XP adelgazante, pérdida de peso Daquan
Sentido común y problemas comunes con Win7 sleep e hibernación
Luchando con la confusión detrás de la optimización del sistema
Función de reparación automática del sistema Win7 cómo iniciar
AHCI enciende la solución de pantalla azul
Cuando se ejecuta el mensaje "regedit": no se encuentra ACLUI.DLL
Maravilloso y constante, Malata toma tres nuevos productos de Windows 7