La Red de Conocimientos Pedagógicos - Currículum vitae - Programación en Linux C desde principiante hasta directorio competente

Programación en Linux C desde principiante hasta directorio competente

Conceptos básicos de la parte 1

Capítulo 1 Descripción general del sistema Linux 1

1.1 ¿Qué es Linux 2?

1.2 Características del sistema Linux y funciones principales 2

1.2.1 Características del sistema Linux 3

1.2.2 Funciones principales del sistema Linux 3

1.3 Versión del kernel de Linux y versión de lanzamiento 5

1.4 Instalación del sistema 6

1.4.1 Preparativos antes de la instalación del sistema 6

1.4.2 Instalación de Linux desde el CD 6

1.4.3 Instalar Linux desde el disco duro 22

1.4.4 Instalar Linux en una máquina virtual 22

1.5 Uso de Shell 27

1.5.1 Introducción a Shell 27

1.5.2 Tipos comunes de Shell 28

1.5.3 Uso simple de Shell 29

1.5.4 Comodín 30

1.5 .5 Cotizaciones 31

1.5.6 Comentarios 33

1.6 Comandos comunes de Linux 33

1.6.1 Comandos relacionados con directorios 33

1.6.2 Comandos relacionados con archivos 34

1.6.3 Comandos relacionados con servicios de red 35

1.7 Resumen de este capítulo 35

Ejercicio práctico 36

Capítulo 2 Conceptos básicos de la programación en lenguaje C 37

2.1 Antecedentes históricos del lenguaje C 38

2.2 Características del lenguaje C 38

2.3 Tipos de datos básicos del lenguaje C 39

2.3.1 Tipo entero 39

2.3.2 Tipo real 40

2.3.3 Tipo carácter 41

2.4 Operadores y expresiones 43

2.4.1 Operadores aritméticos y expresiones aritméticas 43

2.4.2 Operadores de asignación y expresiones de asignación 44

2.4.3 Operador de coma y expresión de coma 45

2.5 Tres estructuras básicas del programa C 46

2.5.1 Estructura secuencial 46

2.5 .2 Estructura de selección 47

2.5. 3 Estructura de bucle 51

2.6 Entrada y salida de datos en lenguaje C 54

2.6.1 Función de salida de caracteres putchar 54

2.6.2 Función de entrada de caracteres getchar 54

2.6.3 Formatear la función de salida printf 54

2.6.4 Formatear la función de entrada scanf 56

2.7 Función 57

2.7.1 Definición de función 57

2.7.2 Llamada de función 58

2.7.3 Categoría de almacenamiento de variable 59

2.8 Matriz 62

2.8.1 Definición y uso de matriz unidimensional 63

2.8.2 Definición y uso de matriz bidimensional 64

2.8.3 Matrices y cadenas de caracteres 65

2.8.4 Funciones de procesamiento de cadenas de uso común 66

2.9 Punteros 69

2.9.1 Direcciones y punteros 69

2.9.2 Definición y uso de punteros 70

2.9.3 Arrays y punteros 71

2.9.4 Cadenas y punteros 72

2.9.5 Puntero a función 72

2.10 Estructura y *

**Usar cuerpo 73

2.10.1 Definir y hacer referencia a la estructura 73

2.10.2 Matriz de estructura 74

2.10.3 Puntero a la estructura 74

2.10.4 ***Usar cuerpo 75

2.10.5 Usar typedef para definir tipos 77

2.11 Lista enlazada 77

2.11 .1 Descripción general de listas enlazadas 77

2.11.2 Establecimiento de listas enlazadas unidireccionales dinámicas 78

2.11.3 Salida de listas enlazadas unidireccionales 80

2.11. 4 Para operación de eliminación unidireccional de lista enlazada 80

2.11.5 Operación de inserción de lista enlazada individualmente 81

2.11.6 Lista enlazada circular 82

2.11 .7 Lista doblemente enlazada 82

2.12 Operadores bit a bit y operaciones bit a bit 83

2.12.1 Operador "Bit a bit AND" (amp;) 84

2.12.2 Operador "Bit a bit OR" ” (|) 84

2.12.3 Operador “Negación” (~) 84

2.12.4 Operador “XOR” (^) 84

2.12.5 Operadores de cambio (lt; lt; y gt; gt;) 85

2.12.6 Campos de bits 85

2.13 Comandos de preprocesamiento en lenguaje C 86

2.13.1 Definición de macro 86

2.13.2 Inclusión de archivos 87

2.13.3 Compilación condicional 88

2.13.4 # error y otros comunes comandos de preprocesamiento usados ​​89

2.14 Resumen de este capítulo 89

Ejercicios prácticos 89

Capítulo 3 vi y editor de Emacs 91

3.1 Uso vi 92

3.1.1 Iniciar y salir de vi 92

3.1.2 Modo de línea de comando de vi 93

3.1.3 vi Modo Insertar 96

3.1.4 Modo básico de vi 96

3.2 Ejemplos de uso de Vi 97

3.3 Uso de Emacs 100

3.3.1 Iniciar y salir de Emacs 101

3.3.2 Operaciones básicas en Emacs 102

3.4 Ejemplos de uso de Emacs 107

3.5 Resumen de este capítulo 109

Ejercicio práctico 109

Capítulo 4 Compilador gcc y depurador gdb 110

4.1 Introducción al compilador gcc 111

4.2 Cómo usar gcc 112

4.2 .1 Compilación preliminar de gcc 112

4.2.2 Función de aviso de advertencia 114

4.2.3 Optimización de gcc 116

4.2 4 Biblioteca de conexiones 119

.

4.2.5 Compilación de múltiples programas fuente al mismo tiempo 120

4.2.6 Pipeline 120

4.2.7 Opciones de depuración 121

4.3 Depurador gdb 122

4.3.1 Introducción a gdb 122

4.3.2 Comandos comunes de gdb 123

4.3.3 Depuración preliminar de gdb 124

4.4 Explicación detallada del uso de gdb 126

4.4.1 Llamar a gdb 127

4.4.2 Usar puntos de interrupción 127

4.4.3 Ver datos de tiempo de ejecución 129

4.4.4 Ver programa fuente 133

4.4.5 Cambiar la ejecución del programa

Línea 135

4.5 Introducción al depurador xxgdb 138

4.6 Resumen de este capítulo 139

Ejercicio práctico 139

Capítulo 5 El uso y uso de make Escritura Makefile 141

5.1 Qué es make 142

5.1.1 Descripción general del mecanismo make 142

5.1.2 La relación entre make y Makefile 144

5.2 Reglas de escritura de Makefile 147

5.2.1 Reglas de sintaxis básica de Makefile 148

5.2.2 Uso de comodines en las reglas 149

5.2. 3 Pseudo objetivos 149

5.2.4 Múltiples objetivos 151

5.2.5 Generar dependencias automáticamente 151

5.3 Comandos Makefile 152

5.4 Variables 154

5.4.1 La base de las variables 154

5.4.2 Asignación de variables 154

5.4.3 definir palabra clave 156

5.4.4 Indicador de anulación 156

5.4.5 Variables de destino y variables de modo 157

5.5 Llamadas a funciones comunes 158

5.5.1 Función de procesamiento de cadenas 158

5.5.2 Función de operación de nombre de archivo 162

5.5.3 Función de bucle 164

5.5.4 Función de juicio condicional 165

5.5.5 Otras funciones utilizadas habitualmente 166

5.6 Reglas implícitas 168

5.6.1 Ejemplos de reglas implícitas 168

5.6.2 Reglas implícitas Variables 169

5.6.3 Reglas de patrones de uso 170

5.7 Resumen de este capítulo 173

Ejercicios prácticos 173

Parte 2 Mejora

Capítulo 6 Operaciones de E/S de archivos 174

6.1 Introducción al sistema de archivos de Linux 175

6.1.1 Estructura del sistema de archivos de Linux 175

6.1.2 Archivo tipos 176

6.1.3 Permisos de acceso a archivos 179

6.2 Operaciones de E/S basadas en descriptores de archivos 179

6.2.1 Descriptor de archivos 180

6.2.2 Entrada estándar, salida estándar y error estándar 180

6.2.3 Redirección de archivos 181

6.2.4 Creación de archivos, apertura y cierre 182

6.2.5 Posicionamiento de archivos 186

6.2.6 Lectura y escritura de archivos 188

6.3 Operaciones de atributos de archivos 192

6.3.1 Cambiar archivo permisos de acceso192

6.3.2 Cambiar propietarios de archivos193

6.3.3 Renombrar193

6.3.4 Modificar longitud de archivo 194

6.4 Otras operaciones en archivos 195

6.4.1 funciones stat, fstat y lstat 195

6.4.2 funciones dup y dup2 196

p>

6.4.3 función fcntl 197

6.4.4 Funciones sync y fsync 197

6.5 Operación de archivos especiales 198

6.5.1 Tabla de contenido Operaciones con archivos 198

6.5.2 Operaciones de archivos vinculados 201

6.5.3 Gestión

Funcionamiento de limas de canal 204

6.5.4 Limas de equipos 204

6.6 Resumen de este capítulo 205

Taladro práctico 205

Capítulo 7 se basa en operaciones de Stream I/O 206

7.1 Streams y cachés 207

7.1.1 Streams y objetos FILE 207

7.1.2 Entrada estándar, estándar salida y error estándar 207

7.1.3 Almacenamiento en caché 207

7.1.4 Operaciones en caché 210

7.2 Apertura y cierre de flujos 212

7.2.1 Abrir el flujo 212

7.2.2 Cerrar el flujo 214

7.2.3 Trabajar antes de cerrar el flujo 216

7.3 Leer y escribir el flujo 216

7.3.1 E/S basadas en caracteres 217

7.3.2 E/S basadas en líneas 220

7.3.3 E/S directa 222

7.3.4 E/S formateadas 224

7.4 Resumen de este capítulo 226

Ejercicio práctico 227

Capítulo 8 Control de procesos 228

8.1 Conceptos básicos de procesos 229

8.1.1 Introducción a los procesos de Linux 229

8.1.2 Procesos y trabajos 230

8.1.3 Identificación de procesos 230

8.2 Funciones relacionadas con el control de procesos 232

8.2.1 funciones fork y vfork 232

8.2.2 función ejecutiva 237

8.2.3 funciones exit y _exit 242

8.2.4 funciones wait y waitpid 245

8.2.5 La vida del proceso 251

8.2.6 ID de usuario e ID de grupo 251

8.2.7 función del sistema 253

8.3 Relación entre múltiples procesos 255

8.3.1 Grupo de procesos 255

8.3.2 Sesión 256

8.3.3 Terminal de control 257

8.4 Resumen de este capítulo 259

Ejercicio práctico 259

Capítulo 9 Señales 260

9.1 Introducción a las señales de Linux 261

9.1.1 Conceptos básicos de señales 261

9.1.2 Mecanismo de procesamiento de señales 265

p>

9.2 Funciones relacionadas con la operación de señales 267

9.2.1 Procesamiento de señales 267

9.2.2 Envío de señales 274

9.2. 3 Bloqueo de señales 282

9.2.4 Temporizadores y señales 284

9.3 Resumen de este capítulo 286

Ejercicios prácticos 287

Capítulo 10 Comunicación entre procesos 288

10.1 Introducción a la comunicación entre procesos 289

10.2 Tuberías 290

10.2.1 El concepto de tuberías 290

10.2.2 Creación y cierre de tuberías 291

10.2.3 Lectura y escritura de tuberías 292

10.3 Tuberías con nombre 297

10.3.1 El concepto de canalizaciones con nombre 297

p>

10.3.2 Creación de canalizaciones con nombre 297

10.3.3 Lectura y escritura de canalizaciones con nombre 299

10.4 Cola de mensajes 303

10.4.1 El concepto de cola de mensajes 303

10.4.2

Creación y apertura de cola de mensajes 305

10.4.3 Lectura y escritura de cola de mensajes 306

10.4.4 Obtención o configuración de propiedades de cola de mensajes 308

10.5 * * *Compartir memoria 312

10.5.1 ***El concepto de compartir memoria 312

10.5.2 ***Operaciones relacionadas con compartir memoria 313

10.6 Cantidad de señales 318

10.6.1 El concepto de semáforo 319

10.6.2 Operaciones relacionadas del conjunto de semáforos 320

10.7 Resumen de este capítulo 325

Ejercicio práctico 326

Capítulo 11 Programación de redes 327

11.1 Conocimientos básicos de programación de redes 328

11.1.1 Arquitectura de redes informáticas 328

11.1.2 Protocolo de control de transmisión TCP 333

11.1.3 Protocolo de datagramas de usuario UDP 335

11.1.4 Modo cliente/servidor 336

11.2 Conceptos básicos de la programación de sockets336

11.2.1 ¿Qué es un socket337?

11.2.2 El concepto de número de puerto338

11.2.3 Estructura de datos de sockets 338

11.2.4 Funciones básicas 340

11.3 Programación de socket TCP 343

11.3.1 Flujo de trabajo de comunicación de socket TCP 343

11.3.2 Socket TCP Ejemplo de programa Cliente/Servidor 356

11.4 Programación de socket UDP 360

11.4.1 Flujo de trabajo de comunicación de socket UDP 360

11.4.2 Ejemplo de programa Cliente/Servidor de socket UDP 362

11.5 Programación del socket original 365

11.5.1 Creación del socket original 365

11.5.2 Ejemplo de programa de socket original 365

11.6 Resumen de este Capítulo 376

Ejercicio práctico 376

Capítulo 12 Programación de la interfaz gráfica de Linux 377

12.1 Introducción a la programación de la interfaz gráfica en Linux 378

12.1.1 Introducción a Qt 378

12.1.2 Introducción a GTK 378

12.2 Componentes básicos de la interfaz 381

12.2.1 Un ejemplo simple381

12.2.2 Ventana383

12.2.3 Etiqueta385

12.2.4 Botón386

12.2.5 Cuadro de texto 387

12.3 Componente de diseño de interfaz 389

12.3.1 Tabla 390

12.3.2 Cuadro 393

12.3.3 Panel 395

12.4 Otros componentes comunes 398

12.4.1 Barra de progreso, botón giratorio, cuadro combinado 398

12.4.2 Botones de opción y botones de verificación 402

12.4.3 Menú desplegable 404

12.5 Señales y funciones de devolución de llamada 406

12.6 Resumen de este capítulo 409

Ejercicio práctico 409

Parte 3 Combate práctico

Capítulo 13 Diseño de una calculadora en Linux 411

13.1 Análisis de funciones del software 412

13.2 División de los módulos del programa 413

13.3 Software

Implementación específica 415

13.3.1 Archivo de encabezado 415

13.3.2 Función de visualización de interfaz hexadecimal 416

13.3.3 Función de visualización de interfaz decimal 417

13.3.4 Función de visualización de interfaz octal 418

13.3.5 Función de visualización de interfaz binaria 419

13.3.6 Función de conversión entre bases 420

13.3 .7 Módulo de procesamiento de señales 423

13.3.8 Función principal 432

13.4 Demostración del efecto del uso del software 438

13.5 Resumen de este capítulo 439

Capítulo 14 Diseño de software de chat bajo plataforma Linux 440

14.1 Descripción general de las funciones del software 441

14.1.1 Requisitos funcionales del lado del servidor 441

14.1. 2 Requisitos funcionales del cliente 442

14.1.3 Requisitos de manejo de errores 442

14.2 Introducción a las herramientas de desarrollo integradas de Glade 443

14.3 División del módulo de funciones de software 444

14.3.1 División del módulo de función del servidor 444

14.3.2 División del módulo de función del cliente 445

14.3.3 Definición del identificador de mensaje 445

14.3 .4 Diseño de la estructura del mensaje 446

14.4 Implementación específica del programa del servidor 447

14.4.1 Flujo de procesamiento de mensajes del servidor 447

14.4.2 Funciones principales del servidor y variables 448

14.4.3 Diseño e implementación del módulo de procesamiento de mensajes del servidor 449

14.4.4 Método de almacenamiento de datos del servidor 450

14.4.5 Proceso de registro de usuario 450

14.5 Implementación específica del programa cliente 451

14.5.1 Proceso de operación del cliente 451

14.5.2 Proceso de envío y recepción de mensajes del cliente 451

14.5.3 Principales funciones y variables del cliente 452

14.5.4 Diseño e implementación del módulo de funciones del cliente 453

14.6 Demostración del efecto de uso del software de chat 455

14.7 Resumen de este capítulo 459

Capítulo 15 Diseño de herramientas de administración remota de Linux 460

15.1 Descripción general de las funciones del software 461

15.1 1 Introducción a Webmin 461

15.1.2 Diseño general de software 461

15.2 Programación del lado del servidor 463

15.2.1 Flujo de trabajo del lado del servidor 463

15.2.2 Operaciones de gestión de usuarios del sistema 464

15.2.3 Operaciones de gestión de grupos de usuarios del sistema 466

15.2.4 Gestión de inicio de servicios del sistema 468

15.2.5 Operaciones de gestión de DNS 469

15.2.6 Operaciones de gestión de servicios Apache 471

15.2.7 Operaciones de gestión de servicios FTP 474

15.3 Programa cliente 475

15.3.1 Interfaz de conexión 475

15.3.2 Interfaz principal 477

15.4 Resumen de este capítulo 479

Capítulo 16 Firewall simple en Diseño de software Linux 480

16.1 Conceptos básicos de Netfilter 481

16.1.1 ¿Qué es Netfilter 481?

16.1.2 Netfilter

Mecanismo HOOK 482

16.1.3 Llamada HOOK 485

16.1.4 Implementación HOOK 486

16.1.5 Introducción a IPTables 488

16.1.6 Funciones de control que Netfilter puede lograr 489

16.2 Descripción general del diseño de software 491

16.2.1 Marco general del software 491

16.2.2 Diseño del lado de gestión 492

16.2.3 Diseño del terminal de control 493

16.3 Utilice Netfilter para diseñar el módulo de función del terminal de control 495

16.3.1 Módulo de control de gestión ICMP 495

16.3.2 Módulo de control de gestión FTP 497

16.3.3 Módulo de control de gestión HTTP 499

16.3.4 Módulo de compilación, carga y descarga 499

16.4 Prueba de función de software 501

16.5 Resumen de este capítulo 503

Capítulo 17 Diseño de una plataforma de operación interactiva remota de puerta de enlace doméstica integrada basada en Linux 504

17.1 Introducción a la tecnología integrada 505

17.1.1 El concepto de sistema integrado 505

17.1.2 Sistema operativo integrado 506

17.1.3 Procesador integrado 507

17.2 El concepto de puerta de enlace doméstica y su arquitectura de red 509

17.2.1 El concepto de red doméstica inteligente 509

17.2.2 Interacción remota de la puerta de enlace doméstica Introducción a la tecnología operativa 510

17.2.3 Arquitectura de red de la puerta de enlace doméstica integrada 510

17.3 Plataforma de desarrollo de la puerta de enlace doméstica integrada 511

17.3.1 S3C2410 Introducción a microprocesadores 511

17.3.2 Establecimiento de un entorno de compilación cruzada 513

17.4 Diseño de plataforma de interacción remota 515

17.4.1 Modelo de desarrollo de software de aplicación 515

17.4.2 Servidor web incorporado 516

17.4.3 Interfaz de puerta de enlace común CGI 519

17.5 Implementación específica de módulos de software en Linux 520

17.5.1 Módulo de verificación de inicio de sesión 521

17.5.2 Módulo de comunicación serie 521

17.5.3 Módulo de control de aire acondicionado central 522

17.5.4 Agua inteligente módulo de recopilación de datos del medidor 528

17.5.5 Resultados de la prueba 528

17.6 Resumen de este capítulo 529