Linux
Programación de Sistemas
Pablo Garaizar Sagarminaga garaizar@eside.deusto.es
GNU/Linux: Programación de Sistemas
Pablo Garaizar Sagarminaga
email: garaizar@eside.deusto.es web: http://paginaspersonales.deusto.es/garaizar blog: http://blog.txipinet.com
Facultad de Ingeniería - ESIDE Universidad de Deusto Bilbao
Tabla de contenido
1. PROGRAMACIÓN ENGNU/LINUX...........................................5 1.1 Llamadas al sistema..................................................... .....5 1.2 Programas, procesos, hilos...............................................6 . 1.2.1 Estructuras de datos..............................................7 . 1.2.2 Estados de los procesos en Linux...........................8 1.2.3 Identificativos deproceso................................. .....9 . 1.2.4 Planificación....................................................... ...11 1.3 El GCC............................................................................12 . 1.3.1 Compilación básica..............................................12 . 1.3.2 Paso a paso...................................................... .....13 1.3.3Librerías................................................... .............14 1.3.4 Optimizaciones................................ ....................14 . 1.3.5 Debugging...........................................................15 . 1.4 make world.............................................................. ........15 1.4.1 Makefile, el guión de make...................................16 1.5 Programando en C paraGNU/Linux............................. ...20 . 1.5.1 Hola, mundo!.......................................................20 . 1.5.2 Llamadas sencillas...............................................21 . 1.5.3 Manejo de directorios...........................................32 1.5.4 Jugando con los permisos.....................................35 1.5.5 Creación y duplicación de procesos.....................38 1.5.6 Comunicaciónentre procesos..............................43 1.5.7 Comunicación por red..........................................62 . 2. LICENCIA....................................................................80
ii
Índice de figuras
FIGURA 1.1.1 MECANISMO DE PETICIÓN DE SERVICIOS AL KERNEL..........6 FIGURA 1.5.2 LOS DESCRIPTORES DE FICHERO INICIALES DE UN PROCESO...............................................................................24 FIGURA 1.5.3 DUPLICACIÓN DE PROCESOS MEDIANTE FORK().............39 FIGURA 1.5.4 PROCESOS RECIBIENDO SEÑALES, RUTINAS DE CAPTURA Y PROCESO DE SEÑALES.......................................................48 FIGURA 1.5.5 LA LLAMADA A LA FUNCIÓN ALARM() GENERARÁ UNA SEÑAL SIG_ALARM HACIA EL MISMO PROCESO QUE LA INVOCA...............49 FIGURA 1.5.6 UNATUBERÍA ES UNIDIRECCIONAL, COMO LOS TELÉFONOS DE YOGUR.......................................................................52 FIGURA 1.5.7 EL PROCESO PADRE Y SU HIJO COMPARTEN DATOS MEDIANTE UNA TUBERÍA................................................................53 FIGURA 1.5.8 DOS PROCESOS SE COMUNICAN BIDIRECCIONALMENTE CON DOSTUBERÍAS...............................................................55 FIGURA 1.5.9 COMUNICACIÓN MEDIANTE CAPAS DE PROTOCOLOS DE RED. 64
iii
Índice de tablas
TABLA 1.2.1 CREDENCIALES DE UN PROCESO Y SUS SIGNIFICADOS.........11 TABLA 1.4.2 LISTA DE LAS VARIABLES AUTOMÁTICAS MÁS COMUNES EN MAKEFILES..................................................................18 TABLA 1.5.3 LISTA DE LOS POSIBLES VALORES DEL ARGUMENTO “FLAGS”...............................................................................23 TABLA 1.5.4 LISTA DE LOS POSIBLES VALORES DEL ARGUMENTO “MODE”. ..............................................................................23 TABLA 1.5.5 LISTA DE LOS POSIBLES VALORES DEL ARGUMENTO “WHENCE”. ..............................................................................28
iv
1.Programación en GNU/Linux
E...
Regístrate para leer el documento completo.