fcntl tiene una función poderosa, puede copiar un descriptor existente, obtener /establecer la marca del descriptor de archivo, obtener /establecer la marca de estado del archivo, obtener /configurar la propiedad de E /S asíncrona, Obtener /establecer el bloqueo de grabación.
Cuando varios usuarios usan juntos y operan un archivo, Linux usualmente usa un método para bloquear archivos para evitar recursos de la competencia.
Los bloqueos de archivos fcntl son de dos tipos: los bloqueos de aviso y los bloqueos de aviso obligatorios se definen de la siguiente manera: cada proceso que utiliza un archivo de bloqueo comprueba si hay un cierre, por supuesto Respetar las cerraduras existentes. El kernel y el sistema generalmente insisten en no usar bloqueos de advertencia, y dependen de los programadores para cumplir con esta regla.
(Linux utiliza de forma predeterminada los bloqueos de advertencia) • Los bloqueos obligatorios son aplicados por el kernel. Cuando un archivo se bloquea para una operación de escritura, el kernel bloquea cualquier acceso de lectura o escritura al archivo antes de que el proceso que bloquea el archivo libere el bloqueo. Cada acceso de lectura o escritura verifica la existencia del bloqueo.
El uso de los bloqueos de archivos fcntl para las operaciones de E /S debe ser cuidadoso: se debe considerar cómo el proceso maneja el bloqueo antes de iniciar cualquier operación de E /S y cómo hacer todo antes de desbloquear el archivo. Si el archivo se abre antes de que se establezca el bloqueo, o el archivo se cierra después de leer el bloqueo, otro proceso puede acceder al archivo en una fracción de segundo entre la operación de bloqueo /desbloqueo y la operación de apertura /cierre. Cuando un proceso bloquea un archivo, libere o no el bloqueo agregado, siempre que el archivo esté cerrado, el kernel libera automáticamente el bloqueo sugerido adjunto al archivo (esta es también la mayor diferencia entre el bloqueo recomendado y el bloqueo obligatorio), por lo que No desea establecer un bloqueo de sugerencias para lograr el objetivo de no permitir permanentemente que otros procesos accedan al archivo (los bloqueos obligatorios están disponibles) ^ _ ^; los bloqueos obligatorios funcionan para todos los procesos.
Las funciones que implementan el bloqueo en Linux son lock () y fcntl (). • lock () se utiliza para aplicar bloqueos de advertencia a los archivos • fcntl () se usa para aplicar bloqueos de advertencia y obligatorios a los archivos. Al mismo tiempo, también es posible bloquear un determinado registro del archivo, es decir, registrar el bloqueo.
Ejemplo: • Ejemplo 1, tengo varios procesos (no necesariamente relacionados) que utilizan el mecanismo fctnl para manipular archivos. Esto se denomina método consistente. Ver [2] Sin embargo, si hay otro proceso deshonesto al mismo tiempo, se administra 3721, se apresura, abre, escribe. En este momento, varios procesos fcntl no pueden hacer nada al respecto, por lo que se denomina inconsistencia. El estado final del archivo no es fijo. Debido a que este bloqueo no restringe otros métodos de acceso, se denomina bloqueo de fila recomendado. Los bloqueos obligatorios requieren soporte del kernel, y los bloqueos se comprueban para leer, escribir y abrir. • Ejemplo 2, el llamado bloqueo sugestivo es asumir que las personas seguirán ciertas reglas para hacer una cosa. Por ejemplo, las personas y los automóviles se detendrán cuando vean la luz roja, y seguirán viendo la luz verde. Podemos llamar rojo y verde como candados recomendados. Pero esto es solo una regla. No evitas que algunas personas apaguen las luces rojas. El bloqueo obligatorio es que quieres romper la luz roja. Consulte [3]
¿Cómo uso los bloqueos obligatorios en los sistemas Linux?
Si desea que Linux admita bloqueos obligatorios, debe agregar -o mand al montar (la versión en chino de APUE es incorrecta, está escrita como _omand), y debe configurar los archivos para que se bloqueen. Con relación a (activar set-group-ID y desactivar la ejecución de grupos) vea [4].
1. Introducción a LVS 1. Proporcione capacidades de alta disponibilidad y equilibrio de carga para
Todo el mundo sabe que el script de shell es como un archivo por lotes (.bat) en la era temprana de
La ejecución de live55 en Linux muestra la figura: no obtener ip: ip es 0.0.0.0 live555 no conoce l
Para el uso diario del sistema Linux, es utilizar la línea de comandos para ejecutar, por ejemplo,
Cómo ocultar nginx y el número de versión de PHP
Cómo instalar el software del sistema operativo Linux
Instalar el servicio FTP bajo linux centos
Configuración de LVM bajo el servidor SUSE
Inux sistema de gestión y mantenimiento - comando ifconfig
Cómo crear un servidor FTP bajo Linux
Instalar paquete de archivos rpm bajo Linux
Método de solución de problemas del sistema WindowsXP
Sistemas de archivos Ext2 y Ext3
Supervisar los registros del sitio web en la línea de comandos de Linux
[Consejos] Win10 10041 tarjeta de error de actualización 10061 en la interfaz, ¿qué debo hacer?
La barra de tareas del sistema Win7 no puede mostrar la ventana abierta cómo resolver
Win7 actualización win8.1 después de 360 navegador no puede abrir cómo hacerlo?
¿Qué significa el CC en el correo electrónico?
Después de la actualización de Win10, el inicio se vuelve muy lento y demora 30 segundos.
Cómo limpiar completamente el icono residual del software de desinstalación de la computadora win7
Windows Server 2008 extendido período de activación
¿Cómo grabar el disco del sistema Win7? Win7 System Disk Burning Tutorial
Error de actualización del sistema Win10 0xC1900101-0x3000d Solución