El OCB contiene la información activa sobre el recurso abierto. Por consiguiente, si un proceso abre el mismo archivo dos veces, cualquier llamada al lseek () usando un FD no afectará el punto seek del otro FD.
Lo mismo es válido para la apertura del mismo archivo por diferentes procesos. El siguiente diagrama muestra dos procesos, en el cuál un proceso abre el mismo archivo dos veces, y el otro lo abre una vez. No hay ningún FD compartido.
Diversos FD en uno o más procesos pueden referirse al mismo OCB. Esto se cumple cuando:
- Un proceso puede usar dup (), dup2 (), o fcntl () funciones para crear un descriptor de archivo duplicado que se refiere al mismo OCB.
- Cuando un nuevo proceso se crea vía fork (), spawn (), o exec (), todos los descriptores de archivo abiertos se heredan por defecto por el nuevo proceso; estos descriptores heredados se refieren al mismo OCB como el descriptor de archivo correspondiente en el proceso padre.
Cuando varios FD se refieren al mismo OCB, cualquier cambio en el estado del OCB se ve inmediatamente en todos los procesos que tienen el descriptor de archivo unido al mismo OCB.
El siguiente diagrama muestra dos procesos, en el cuál uno abre un archivo dos veces, entonces hace un dup() para conseguir un tercero. El proceso crea a un hijo que hereda todos los archivos abiertos.
Se puede prevenir que un DF pueda heredarse cuando usted llama a un SPAWN () o exec () llamando a la función fcntl () y seteando la bandera de FD_CLOEXEC.
Envíanos tús preguntas, comentarios o sugerencias