1. Variables estáticas

Capítulo 3. Declaración de variables

Ejemplo de código

#include <stdio.h>

void contarLlamadas() {
    static int contador = 0;  // Variable estática
    contador++;  // Incrementa el valor en cada llamada
    printf("Esta función ha sido llamada %d veces\n", contador);
}

int main() {
    contarLlamadas();  // Salida: Esta función ha sido llamada 1 veces
    contarLlamadas();  // Salida: Esta función ha sido llamada 2 veces
    contarLlamadas();  // Salida: Esta función ha sido llamada 3 veces

    return 0;
}

2. Open- read- close- file descriptors (fd)

Leer fichero C, linux: open, read , close

2.1: Modos de apertura de la función open

Que retorna

Que tine como entrada

Caule se su libreria

2.1.1: Como organiza los fd el sistema de UNIX cuando usa open.

La función open en sistemas operativos como Unix/Linux (y derivados) es una llamada al sistema que permite a un programa acceder a archivos. Cuando el programa llama a open, el sistema operativo realiza una serie de pasos para devolver un "file descriptor" (FD) o descriptor de archivo, que es esencialmente un identificador único para interactuar con ese archivo abierto.

Funcionamiento a nivel interno:

  1. Tabla de archivos abiertos por proceso: Cada proceso tiene su propia tabla de descriptores de archivos. Cuando un proceso invoca la función open, el sistema operativo asigna una entrada en esta tabla, en la que se guarda información sobre el archivo abierto, como su ubicación en el disco, los permisos y el modo en que fue abierto (lectura, escritura, etc.). El índice de esta tabla se convierte en el "file descriptor" que el programa recibe como resultado.
  2. Comprobación del archivo: El sistema operativo comprueba que el archivo exista (o lo crea, dependiendo de los parámetros) y que el proceso tenga los permisos necesarios para abrirlo. Además, puede verificar el modo en que el archivo será utilizado (por ejemplo, solo lectura o escritura).
  3. Asociación con el sistema de archivos: A nivel del kernel, el descriptor de archivo no solo apunta a la tabla del proceso, sino que también se asocia con una estructura de datos en el kernel llamada "inode" (en sistemas de archivos Unix) que contiene metadatos sobre el archivo, como su ubicación física en el disco, tamaño, tipo, y demás. Esto facilita el acceso a los datos cuando el archivo se lee o escribe.
  4. Retorno del File Descriptor: Una vez que se ha asignado la entrada en la tabla y el archivo está listo para ser accedido, el sistema operativo devuelve el número de descriptor al programa, que luego puede usarlo en otras funciones como read, write, o close para interactuar con el archivo.

En resumen, el file descriptor es simplemente un índice que el kernel asigna a una tabla interna que guarda la información sobre el archivo abierto, y el sistema operativo se encarga de asociarlo con la estructura adecuada que representa el archivo real en el sistema de archivos.

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