Qué son los fd

Es un descritor que define a un archivo (espacio de memeria (bytes) acotado) dentro de un proceso.

Screenshot from 2024-12-28 13-52-17.png

Screenshot from 2025-01-11 03-17-27.png

Abrir un archivo desde dos procesos diferentes vs desde un proceso:

Desde un proceso

Cuando abrimos un archivo dos veces desde un proceso el fd (número que identifica al archivo de la tabla de file descriptor) de cada apertura es diferente, aunque ambos se refieren al mismo archivo, no hara una copia del archivo para cada fd. Los punteros de las funciones write, read etc…serán independientes y no habra problemas de sincronización entre las operaciones porque estas se ejecutan secuencialmente en el mismo proceso, no se pueden “solapar”. Esto puede genrar porblemas de logica en nuestro codigo si escribimos en el mismo archivo desde dos punteros a la vez, ya que cada uno escribira en una parte diferente del archivo.El puntero al archivo se llama OFFSET. Es decir cada fd dentro de un proceso tiene su propio offset. Cuando hacemos operaciones de lectura y escritura desde un file descriptor movemos el offset dentro del archivo, el offset es compartido por las operaciones de lectura y escritura por lo que cuando escribimos en un archivo y lo intentamos leer despues estaremos leyendo desde la última posición del offset (*ver documentacion GNL para ver pruebas de open read y write en archivos*).

Screenshot from 2025-01-11 04-06-38.png

La manera de evitar esto es mediante las flags de apertura de open (Ver documentacion GNL)

Screenshot from 2025-01-11 04-13-04.png

Screenshot from 2025-01-11 04-19-25.png

La solucion para poder sincronizar las lecturas para escribir si queremos usar el archivo intermediario en una comunicacion por ejemplo, es cerrarlo despues de escribir en el. y despues volverlo a abrir, con ello no habra problemas de sincronizacion en este tipo de operaciones.

Screenshot from 2025-01-11 05-16-56.png

Desde procesos diferentes

(Si resulta confuso, se recomienda saltar esta sección y volver después de entender qué son los procesos. Es importante revisar esto antes de ver las redirecciones).