descriptores de archivos
Descriptores de archivos
Section titled “Descriptores de archivos”Un descriptor de archivo en linux es un número entero que el kernel asigna a cada archivo, dispositivo, socket o flujo abierto por un proceso.
Los descriptores de archivos permiten que los programas lean, escriban o interactúen con archivos y dispositivos sin tener que conocer los detalles del hardware.
Conceptos clave
Section titled “Conceptos clave”- Identificador numérico
- Cada archivo abierto recibe un número entero único dentro del proceso.
- Por ejemplo:
0,1,2son los primeros descriptores estándar.
- Relación con el kernel
- Cuando abres un archivo con
open(), el kernel devuelve un descriptor. - Todas las operaciones de E/S (lectura, escritura, cierre) se realizan usando ese descriptor.
- Cuando abres un archivo con
- Flujos estándar
Linux define tres descriptores estándar por defecto para cada proceso:
| Descriptor | Nombre | Propósito |
|---|---|---|
| 0 | stdin | Entrada estándar (keyboard, pipe) |
| 1 | stdout | Salida estándar (pantalla, pipe) |
| 2 | stderr | Salida de errores estándar |
Operaciones comunes con descriptores de archivos
Section titled “Operaciones comunes con descriptores de archivos”- Abrir un archivo
int fd = open("archivo.txt", O_RDONLY);fdes el descriptor que devuelve el kernel.
- Leer datos
char buffer[100];read(fd, buffer, 100);- Escribir datos
write(fd, "Hola", 4);- Cerrar un descriptor
close(fd);- Libera el descriptor para que pueda usarse en otros archivos.
Redirección de descriptores en shell
Section titled “Redirección de descriptores en shell”En la terminal también puedes manipular descriptores:
- Redirigir stdout a un archivo:
echo "Hola" > salida.txt- Redirigir stderr a un archivo:
ls /noexiste 2> errores.txt- Redirigir stdout y stderr al mismo archivo:
comando > todo.txt 2>&1