Libros urgentes
Ciencias Humanas
Ciencias Técnicas
Derecho
Economía
Informática
Libros de Texto
Literatura
Oposiciones
Otros
Tiempo Libre

Informática > Programación > Programación. Otros

Programación En Linux. Casos Prácticos
Robbins, Arnold (Ed. Anaya Multimedia)
Precio:44,5 € ($56,05)
672 páginas.
Idioma: Español
ISBN: 8441518394. ISBN-13: 9788441518391
1ª edición (04/2005).
Entrega: 24 a 48 horas contra reembolso por agencia urgente*


Una de las mejores formas de aprender a programar consiste en leer programas bien escritos. En este libro se analizan las principales API de llamadas de sistema de Linux, las que constituyen el núcleo de cualquier programa importante, mediante la descripción de código de programas de producción que se utilizan cotidianamente.

Mediante el análisis de programas concretos, no sólo aprenderá cómo utilizar las API de Linux, sino que también puede examinar problemas del mundo real (de rendimiento, portabilidad o robustez) que surgen al diseñar programas. Además, un gran número de los aspectos descritos se aplican también a todos los sistemas modernos de Unix.

Con contenidos sencillos y claramente estructurados, esta obra se convierte en la guía esencial para abordar temas claves como la administración de memoria, la entrada y salida de archivos, o entender aspectos como los procesos y señales, la compatibilidad de programación y la necesaria e inevitable depuración del código.

ÍNDICE

Prólogo
Público
Qué aprenderá
Lo pequeño es hermoso: programas de Unix
Estándares
Funciones y prestaciones: programas GNU
Resumen de los capítulos
Convenciones tipográficas
Obtener código fuente de Unix y GNU
Código de Unix
Código GNU
Obtener los programas de ejemplo utilizados en el libro
Ejemplos del libro

Parte I. Archivos y usuarios

1. Introducción
El modelo de archivos de Linux/Unix
Archivos y permisos
Directorios y nombres de archivo
Archivos ejecutables
Dispositivos
El modelo de procesos de Linux/Unix
Canalizaciones: Asociación de procesos
C Estándar y C Original
¿Por qué los programas GNU son mejores?
Diseño de programas
Comportamiento de programas
Programación de código en C
Aspectos que hacen que los programas GNU sean mejores
Últimas reflexiones sobre los estándares de codificación GNU
Portabilidad revisada
Crear código según los estándares
Seleccionar la mejor interfaz para el trabajo
Aislar problemas de portabilidad tras interfaces nuevas
Emplear Autoconf para la configuración
Lecturas recomendadas
Resumen
Ejercicios

2. Argumentos, opciones y entorno
Convenciones de argumentos y opciones
Convenciones de POSIX
Opciones largas de GNU
Procesamiento básico de línea de comandos
El programa echo de V7
Análisis de opciones: getopt() y getopt_long()
Opciones de una letra
Ordenación de opciones y getopt() de GNU
Opciones largas
Tabla de opciones largas
Opciones largas al estilo POSIX
Resumen de los valores de retorno de getopt_long()
getopt() o getopt_long() de GNU en programas de usuario
El entorno
Funciones de administración del entorno
El entorno completo: environ
env de GNU
Resumen
Ejercicios

3. Administración de memoria a nivel de usuario
Espacio de direcciones de Linux/Unix
Asignación de memoria
Llamadas de biblioteca: malloc(), calloc(), realloc(), free()
Detalles del lenguaje C
Asignación inicial de memoria: malloc()
Liberación de memoria: free()
Cambio de tamaño: realloc()
Asignación y relleno con ceros: calloc()
Resumen de los estándares de codificación GNU
Uso de asignadores privados
Ejemplo: Leer líneas arbitrariamente largas
Sólo GLIBC: Leer líneas completas: getline() y getdelim()
Copia de cadenas: strdup()
Llamadas de sistema: brk() y sbrk()
Llamadas de programador perezoso: alloca()
Examen del espacio de direcciones
Resumen
Ejercicios

4. Archivos y E/S de archivo
Introducción al modelo de E/S de Linux/Unix
Presentación de la estructura básica del programa
Determinación de errores
Valores de errno
Estilo de los mensajes de error
Realización de operaciones de entrada y salida
Concepto de descriptor de archivo
Apertura y cierre de archivos
Asignación de variables FILE * a descriptores de archivo
Cierre de todos los archivos abiertos
Lectura y escritura
Ejemplo: cat de Unix
Acceso aleatorio: desplazamiento por un archivo
Creación de archivos
Especificación de los permisos de archivo iniciales
Creación de archivos con creat()
Revisión de open()
Almacenamiento obligado de datos en disco
Definición de la longitud de archivo
Resumen
Ejercicios

5. Directorios y metadatos de archivo
Consideración del contenido de un directorio
Definiciones
Contenidos de directorio
Enlaces físicos
El programa link de GNU
Punto y punto-punto
Modificación del nombre de archivo
Eliminación de archivos
Eliminación de archivos abiertos
Uso de ISO C: remove()
Enlaces simbólicos
Crear y eliminar directorios
Lectura de directorios
Lectura de directorios básica
Consideraciones de portabilidad
Entradas de directorio en Linux y BSD
Funciones de posicionamiento de directorios de BSD
Obtención de información sobre archivos
Tipos de archivo en Linux
Obtención de información de archivo
Sólo Linux: Especificación temporal de archivo de mayor precisión
Determinación del tipo de archivos
Información de dispositivos
Revisión de cat de V7
Trabajar con enlaces simbólicos
Cambiar el propietario, los permisos y las horas de modificación
Cambiar el propietario de un archivo: chown(), fchown() y lchown()
Cambiar permisos: chmod() y fchmod()
Cambiar dataciones: utime()
Falsificar utime(file, NULL)
Uso de fchown() y fchmod() por razones de seguridad
Resumen
Ejercicios

6. Interfaces de la biblioteca general (Primera parte)
Horas y fechas
Obtención de la hora actual: time() y difftime()
Desglose de horas: gmtime() y localtime()
Formateo de fechas y horas
Formateo temporal sencillo: asctime() y ctime()
Formateo temporal complejo: strftime()
Conversión de una expresión temporal desglosada a time_t
Obtención de información de la zona horaria
Característica confusa de los sistemas BSD: timezone(), no timezone
Funciones de ordenamiento y búsqueda
Ordenamiento: qsort()
Ejemplo: Ordenar empleados
Ejemplo: Ordenamiento del contenido de un directorio
Búsqueda binaria: bsearch()
Nombres de usuarios y grupos
Base de datos de usuario
Base de datos de grupo
Terminales: isatty()
Lecturas recomendadas
Resumen
Ejercicios

7. Una combinación de todo: ls
Opciones de ls de V7
Código ls de V7
Resumen
Ejercicios

8. Recorridos por directorios y sistemas de archivos
Montaje y desmontaje de sistemas de archivos
Algo de información previa
Distintos tipos de sistemas de archivos
Montaje de sistemas de archivos: mount
Desmontaje de sistemas de archivos: umount
Archivos para la administración del sistema de archivos
Uso de las opciones de montaje
Trabajo con sistemas de archivos montados: getmntent()
Obtención de información por sistema de archivos
Estilo POSIX: statvfs() y fstatvfs()
Estilo Linux: statfs() y fstatfs()
Desplazarse por la jerarquía de archivos
Cambio de directorio: chdir() y fchdir()
Obtención del directorio actual: getcwd()
Un recorrido por la jerarquía: nftw()
La interfaz nftw()
La función de devolución de llamada nftw()
Un recorrido por el árbol de archivos: du de GNU
Cambio del directorio raíz: chroot()
Resumen
Ejercicios

Parte II. Procesos, comunicación entre procesose internacionalización

9. Administración de procesos y canalizaciones
Creación y administración de procesos
Creación de un proceso: fork()
Después de fork(): Atributos compartidos y distintos
Cómo se comparten los descriptores de archivo
Cómo se comparten los descriptores de archivo y close()
Identificación de un proceso: getpid() y getppid()
Establecimiento de prioridades de procesos: nice()
POSIX y la realidad
Inicio de programas nuevos: La familia exec()
La llamada de sistema execve()
Funciones de contenedor: execl() y otras
Nombres de programa y argv[0]
Atributos heredados en exec()
Terminación de un proceso
Definición de estado de salida del proceso
Retorno desde main()
Funciones de salida
Recuperación del estado de salida de un proceso hijo
Uso de funciones de POSIX: wait() y waitpid()
Uso de las funciones BSD: wait3() y wait4()
Grupos de procesos
Job Descripción general del control de tareas
Identificación de grupo de procesos: getpgrp() y getpgid()
Definición del grupo de procesos: setpgid() y setpgrp()
Comunicación básica entre procesos: Canalizaciones y FIFO
Canalizaciones
Creación de canalizaciones
Almacenamiento en búfer de canalizaciones
FIFO
Administración de descriptores de archivo
Duplicación de archivos abiertos: dup() y dup2()
Creación de canalizaciones no lineales: /dev/fd/XX
Administración de atributos de archivo: fcntl()
El indicador de cierre al ejecutarse
Duplicación de descriptores de archivo
Manipulación de los indicadores de estado de archivoy los modos de acceso
E/S sin bloqueo para canalizaciones y archivos FIFO
Resumen de fcntl()
Ejemplo: Canalizaciones de dos direcciones en gawk
Lecturas recomendadas
Resumen
Ejercicios

10. Señales
Introducción
Acciones de las señales
Señales de C Estándar: signal() y raise()
La función signal()
Envío de señales mediante programación: raise()
Controladores de señales en acción
Sistemas tradicionales
BSD y GNU/Linux
Ignorar las señales
Llamadas de sistema reiniciables
Ejemplo: safe_read() y safe_write() de las utilidades básicasde GNU
Sólo GLIBC: TEMP_FAILURE_RETRY()
Condiciones de desincronización y sig_atomic_t (ISO C)
Otras advertencias
Nuestra historia hasta ahora, Episodio I
Las API de señales de la versión 3 de System V : sigset() y otras
Señales de POSIX
Revelar el problema
Conjuntos de señales: sigset_t y funciones relacionadas
Gestión de la máscara de señales: sigprocmask() y otras
Detección de señales: sigaction()
Recuperar señales pendientes: sigpending()
Hacer que las funciones se puedan interrumpir: siginterrupt()
Envío de señales: kill() y killpg()
Nuestra historia hasta ahora, Episodio II
Señales para la comunicación entre procesos
Señales con fines especiales importantes
Despertadores: sleep(), alarm() y SIGALRM
Más difícil pero con más control: alarm() y SIGALRM
Simple y fácil: sleep()
Señales de control de trabajos
Supervisión paternal: Tres estrategias diferentes
Malos padres: Ignorar a los hijos por completo
Padres permisivos: Supervisión mínima
Control paterno estricto
Señales fork() y exec()
Resumen
Ejercicios

11. Permisos y números de ID de usuario y de grupo
Comprobación de los permisos
ID reales y efectivos
Bits setuid y setgid
Obtención de ID de usuario y de grupo
Comprobación como el usuario real: access()
Comprobación como el usuario efectivo: euidaccess() (GLIBC)
Configurar bits de permiso adicionales para los directorios
Grupo predeterminado para nuevos archivos y directorios
Los directorios y el bit de permanencia
Configuración de los ID reales y efectivos
Cambiar el conjunto de grupos
Cambiar los ID reales y efectivos
Empleo de los bits setuid y setgid
Trabajo con los tres ID: getresuid() y setresuid() (Linux)
Atravesar un campo de minas de seguridad: setuid root
Lecturas recomendadas
Resumen
Ejercicios

12. Interfaces de la biblioteca general (Segunda parte)
Instrucciones de aserción: assert()
Memoria de bajo nivel: Las funciones memXXX()
Configuración de la memoria: memset()
Copia de la memoria: memcpy(), memmove() y memccpy()
Comparación de bloques de memoria: memcmp()
Búsqueda un valor de byte: memchr()
Archivos temporales
Generación de nombres de archivo temporales (Mal)
Creación y apertura de archivos temporales (Bien)
Empleo de la variable de entorno TMPDIR
Cometer suicidio: abort()
Goto no local
Empleo de funciones estándar: setjmp() y longjmp()
Control de las máscaras de señales: sigsetjmp() y siglongjmp()
Advertencias importantes
Números pseudoaleatorios
C Estándar: rand() y srand()
Funciones de POSIX: random() y srandom()
Los archivos especiales de /dev/random y /dev/urandom
Expansiones de metacaracteres
Comparación de patrones simples: fnmatch()
Expansión de nombres de archivo: glob() y globfree()
Expansión de las palabras del intérprete de comandos: wordexp()y wordfree()
Expresiones regulares
Lecturas recomendadas
Resumen
Ejercicios

13. Internacionalización y localización
Introducción
Configuraciones regionales y la Biblioteca C
Categorías de configuración regional y variables de entorno
Definición de la configuración regional: setlocale()
Comparación de cadenas: strcoll() y strxfrm()
Aplicación de formato numérico y monetariode bajo nivel: localeconv()
Aplicación de formato numérico y monetario de alto nivel: strfmon()y printf()
Ejemplo: Aplicar formato a valores numéricos en gawk
Aplicación de formato de valores de fecha y hora: ctime() y strftime()
Otra información regional: nl_langinfo()
Traducción dinámica de los mensajes de programa
Definición del dominio de texto: textdomain()
Traducción de mensajes: gettext()
La traducción de los plurales: ngettext()
Facilitación del uso de gettext()
Programas portátiles: "gettext.h"
Sólo GLIBC:
Cambio del orden de las palabras con printf()
Comprobación de las traducciones en un directorio privado
Preparación de programas internacionalizados
Creación de traducciones
Los caracteres
Caracteres anchos
Codificaciones de caracteres multibyte
Idiomas
Conclusión
Lecturas recomendadas
Resumen
Ejercicios

14. Interfaces ampliadas
Asignación de la memoria alineada: posix_memalign()y memalign()
Bloqueo de archivos
Conceptos relacionados con el bloqueo de archivos
El bloqueo de POSIX: fcntl() y lockf()
Descripción del bloqueo
Obtención y liberación de bloqueos
Advertencias sobre el bloqueo
Bloqueo de BSD: flock()
Bloqueo obligatorio
Horas más precisas
Horas en microsegundos: gettimeofday()
Horas de archivo de microsegundos: utimes()
Temporizadores a intervalos: setitimer() y getitimer()
Pausas más exactas: nanosleep()
Búsqueda avanzada con árboles binarios
Introducción a los árboles binarios
Tres funciones de gestión
Inserción en árbol: tsearch()
Búsqueda de árboles y empleo de un puntero devuelto: tfind()y tsearch()
Recorrido del árbol: twalk()
Eliminación de los nodos del árbol y destruccióndel árbol: tdelete() y tdestroy()
Resumen
Ejercicios

Parte III. Depuración y Proyecto final

15. Depuración
Lo primero es lo primero
Compilación para la depuración
Fundamentos de GDB
Ejecución de GDB
Definición de puntos de interrupción, depuración paso a pasoy definición de puntos de inspección
Programación para la depuración
Código de depuración en tiempo de compilación
Emplee macros de depuración
Evite las macros de expresiones cuando sea posible
Reordene el código si es necesario
Emplee las funciones auxiliares de depuración
Evite las uniones cuando sea posible
Código de depuración en tiempo de ejecución
Añada opciones y variables de depuración
Emplee variables de entorno especiales
Añada código con información de registro
Archivos de depuración en tiempo de ejecución
Añada enlaces especiales para los puntos de interrupción
Herramientas de depuración
La biblioteca dbug: una versión sofisticada de printf()
Depuradores de asignación de memoria
mtrace de GNU/Linux
Electric Fence
Depuración de la asignación de memoria: dmalloc
Valgrind: una herramienta versátil
Otros depuradores de asignación de memoria
Un lint moderno
Pruebas de software
Normas de la depuración
Lecturas recomendadas
Resumen
Ejercicios

16. Un proyecto que lo ensambla todo
Descripción del proyecto
Lecturas recomendadas

Parte IV. Apéndices

Apéndice A. Aprenda a programar en diez años
¿Por qué tiene todo el mundo tanta prisa?
Aprenda a programar en diez años
Referencias
Respuestas

Apéndice B. Licencia Pública General GNU
GNU General Public License
Preamble
Terms and Conditions for Copying, Distribution and Modification
How to Apply These Terms to Your New Programs
Example Use
Traducción no oficial de la Licencia Pública General GNU
Licencia Pública General GNU
Preámbulo
Términos y condiciones para copia, modificación y distribución
Cómo aplicar estos términos a sus nuevos programas

Índice alfabético

Otros libros de Programación. Otros:


Motores 3d Y Lenguajes De Script: Un Ejemplo Práctico Con 3d Gamestudio
Pablo Trinidad Martín-Arroyo; Pedro Antón Alonso; Fernando Antón Alonso.
352 páginas.
Precio: 29,95 € ($37,72)


Programación orientada a objetosProgramación Orientada A Objetos
Joan Arnedo Moreno (coordinador) Daniel Riera i Terrén (coordinador) Jordi Brínquez Jiménez Elena García Barriocanal Miquel Àngel Piera i Eroles Juan José Ramos González.
222 páginas.
Precio: 26 € ($32,75)


Manual de Dynamic HTMLManual De Dynamic Html
Michele Petrovsky.
400 páginas.
Precio: 35,95 € ($45,28)


WINDOWS XP&OFFICE 2003 KEYBOARD SHORCUTSWindows Xp&office 2003 Keyboard Shorcuts
Hart-Davis.
160 páginas.
Precio: 12 € ($15,12)


Agentes Software Y Sistemas Multi-AgenteAgentes Software Y Sistemas Multi-agente
Juan Pavón Y José L. Pérez.
296 páginas.
Precio: 23 € ($28,97)


*Para península. Tiempo estimado para días laborables