user@devops:~$ cat README.md
FD Watch
# Descripción
FD Watch (cpp-fd-watch) es un analizador de file descriptors de Linux escrito en C++23 que lee /proc/sys/fs/file-nr, /proc/sys/fs/nr_open y, por proceso, /proc/<pid>/{fd,comm,limits,stat}. Muestra el estado global del sistema (fds asignados, libres, file-max y el techo practico nr_open con % de utilizacion), los procesos que mas descriptores consumen con su nombre desde /proc/<pid>/comm, los limites soft/hard desde /proc/<pid>/limits (Max open files) con % del limite y aviso de presion (>=80%), y la distribucion de estados del proceso (running/sleeping/disk/zombie/idle) desde /proc/<pid>/stat. Incluye modo watch con tasas delta en vivo cada N segundos (--watch N: fds asignados/s y fds de procesos/s), salida JSON completa para scripting (--json) con estructura {system, processes[], summary}, filtros --top N y --min N, manejo elegante de procesos sin acceso (EACCES se reporta como without access sin romper el scan), colores ANSI desactivables (--no-color) y 17 tests de auto-verificacion (--selftest) que validan el parseo sintetico de file-nr/limits/stat, el formateo, el escape JSON y smoke tests contra /proc real. Cero dependencias: compilacion directa con g++ -std=c++23.
# Características principales
$ Estado global del sistema desde /proc/sys/fs/file-nr: fds asignados, libres, file-max y % de utilizacion sobre nr_open
$ Top consumidores por proceso: conteo real de entradas en /proc/<pid>/fd con nombre desde /proc/<pid>/comm
$ Limites soft/hard por proceso desde /proc/<pid>/limits (Max open files) con % del limite soft y aviso de presion (>=80%)
$ Distribucion de estados de proceso (running/sleeping/disk/zombie/idle) desde /proc/<pid>/stat
$ Modo watch con tasas delta en vivo cada N segundos (--watch N): fds asignados/s y fds de procesos/s con refresco en pantalla
$ Salida JSON completa para scripting: system, processes[] y summary (--json)
$ Filtros --top N y --min N, manejo de procesos sin acceso (EACCES) y colores ANSI desactivables (--no-color)
$ 17 tests de auto-verificacion: parseo sintetico de file-nr/limits/stat, formateo, escape JSON y smoke tests contra /proc real (--selftest)
# Galería
# Tecnologías utilizadas