Una serie de tutoriales en los que se pretende dar los ejemplos más sencillos posible para temas avanzados de programación en C o C++ sobre unix / linux. Se tratan sockets, semáforos, hilos, memoria compartida, rpc, etc. Para cada uno de ellos se pone uno o varios ejemplos con lo mínimo necesario para ponerlo en marcha. Por ejemplo, establecer un socket y transmitir por una lado una cadena "hola" y recibirla en el otro lado.
Si buscas una referencia de estos temas, aquí no la encontraras. Si sabes algo de programación en C sobre Linux y quieres aprender algo más avanzado, este puede ser un buen sitio para empezar.
Comenzamos a programar con C en Unix / Linux
- Algunas cosas básicas sobre programación de C en linux
- Como editar con el vi, compilar con gcc y ejecutar un "Hola mundo" en C sobre linux.
- Obtención de números aleatorios con rand() y drand48().
- Punteros. Algunos de los errores típicos que se comenten al comenzar a manejar punteros.
- Algunas funciones útiles. Funciones poco conocidas, pero útiles para programación en C sobre unix.
- Tratamiendo de ficheros.
- fopen(), fread(), fwrite() y fclose(). Ejemplo de copia de un fichero.
- fseek() y ftell(). Acceso aleatorio al fichero.
- fputs() y fgets(). Uso normal y avanzadillo de fscanf(). Ficheros de texto.
- Algunas herramientas de programación que conviene conocer, al menos, que existen.
- debugger. Cómo encontrar errores en nuestro código. Una sesión básica con el gdb de linux.
- make. Mi proyecto es muy grande, tengo fuentes por varios directorios y tarda mucho en compilar. make nos ayuda a compilar eficientemente y con facilidad.
- librerías. Qué son las librerías y cómo puedo hacer una. Ficheros .so y .a
- profiler. Mi programa va muy lento. ¿Cómo sé dónde está perdiendo el tiempo?
- ctags. Cómo navegar con el vi por los tipos de nuestro código C
- Códigos ANSI. En una ventana de texto UNIX o MS-DOS se puede controlar desde C/C++ la posición para escribir con un printf() o los colores con los que se escribe el texto.
Algunos temas avanzadillos
- Comunicaciones en red entre procesos. Dos programas que corren en el mismo o en distintos ordenadores abren una comunicación entre ellos y se envían datos.
- Sockets
- Un ejemplo básico. Del ejemplo extraemos una mini-librería para facilitarnos el trabajo con sockets.
- Otro ejemplo de cómo atender a varios clientes simultáneamente sin crear nuevos hilos ni procesos.
- Cómo hacer para que al leer de un socket sepamos qué mensaje nos está llegando.
- Ejemplo de sockets udp.
- Comunicación de sockets entre Java y C.
- Con RPC (Remote Procedure Call) Un programa en ejecución puede llamar a funciones de otro programa también en ejecución en otro ordenador
- Sockets
- IPCs (Recursos compartidos). Varios programas en el mismo ordenador pueden compartir información por medio de recuros compartidos
- Memoria compartida. Dos programas en la misma máquina pueden compartir una zona común de memoria para intercambiar datos.
- Semáforos. Cómo hacer que un programa espere a otro o que no puedan acceder simultáneamente a un recurso común, ambos en el mismo ordenador.
- Colas de mensajes. Dos programas en el mismo ordenador pueden enviarse mensajes con información.
- Señales y alarmas. Dos programas en el mismo ordenador se pueden enviar señales. Cómo hacer que un programa ejecute algo cada cierto tiempo sin necesidad de "dormirlo".
- Procesos y Threads. Podemos hacer que nuestro programa ejecute varias cosas "simultáneamente".
- Gráficos con X11
- Un pequeño programa de ejemplo y las explicaciones básicas para poder empezar a hacer gráficos "maravillosos" en linux/unix con X11.
- Las cuentas para transformar los puntos de nuestro gráfico en pixels de pantalla. Un ejemplo dibujando la función sin(x) sobre una ventana de X11.
Programación C++
- Algunos trucos de programación y cosas que pueden dar problemas y traernos de cabeza.
- Sobrecarga de operadores. Algunos operadores curiosos para sobrecargar.
- Ocultación y encapsulamiento en C++. Por qué es tan importante la encapsulación.
- Lectura y escritura de ficheros de texto. ifstream y ofstream.
0 comentarios: