Programación de sistemas
14 pasos en 6 series de C.
C hablando con el sistema operativo. Entorno y códigos de salida, tiempo, procesos y señales, archivos y directorios, y al final sockets.
Esto es territorio POSIX, es decir, cómo se ve Unix desde adentro. Catorce pasos, y explica mucho comportamiento que hasta ahora solo habías esquivado.
Entorno del programa
- Argumentos de línea de comandosargv[0] es el nombre del programa, y argv[argc] siempre es NULL.
- Parsear opciones con getoptgetopt recorre argv y maneja flags agrupados y sus argumentos.
- El entornogetenv lee una variable y devuelve NULL cuando no está definida.
- Macros de prueba de característicasEl modo ISO estricto oculta las declaraciones POSIX hasta que las pides por nombre.
Tiempo
- Tiempo y formatotime da segundos, localtime los desarma, strftime les da formato.
- Medir tiempo transcurridoclock cuenta tiempo de procesador; CLOCKS_PER_SEC lo vuelve significativo.
Procesos y señales
- forkfork retorna dos veces: cero en el hijo y el pid del hijo en el padre.
- Reemplazar el proceso con execexec nunca retorna si tiene éxito, porque el proceso se convierte en el nuevo programa.
- Tuberías entre procesosUna tubería es un par de descriptores: el hijo escribe y el padre lee.
- SeñalesUn handler corre al interrumpir, y solo puede tocar cosas async-signal-safe.
Archivos y directorios
- Inspeccionar un archivostat llena un struct con tamaño, modo y marcas de tiempo.
- Recorrer un directorioopendir, readdir, closedir: tres llamadas y un bucle.
Sockets
- Un cliente TCPsocket, connect, write, read, close — el cliente completo en cinco llamadas.
Bis
- tcp_echo.cUn servidor de eco de un solo hilo: bind, listen, accept, eco, repetir.