Formation C avancé : programmation système sous Linux

La formation C avancé, programmation sous Linux vous permettra de développer des applications orientées système avec le langage C. Nous commencerons par un rappel avant d'embrayer sur la gestion des threads sous Linux puis nous traiterons le réseau et la gestion de la mémoire. Cette formation très pragmatique abordera ensuite les principales bibliothèques et leurs utilisations dans le but de vous faire gagner du temps lors de vos développements. Cette formation est un must pour les développeurs C qui souhaitent passer un cap et maîtriser le C dans un environnement Linux.

Objectifs de cette formation

  • Développer des applications avancées avec le langage C sous Linux
  • Maîtriser l'approche Système sous Linux en C

Public visé

  • Développeur C

Pré-requis

  • Connaître le langage C

Programme détaillé

Rappels : outils de développement

  • Compilation avec gcc et make
  • Utiliser un débogueur
  • Utiliser un profileur pour suivre en détail ses programmes

Rappels : appels systèmes classiques

  • Développer des programmes compatibles avec les différents systèmes Unix (compatibilité Linux à POSIX)
  • La gestion des processus (fork et exec)
  • Gestion de l'environnement (getenv, etc)
  • La communication entre processus (IPC)
  • Les pipes classiques et les named pipes

Gérer des threads sous Linux

  • Principes et implémentations des threads
  • Avantages et inconvénients par rapport au fork
  • Création de threads, leurs attributs
  • Vérouiller et dévérouiller l'accès à certaines parties des code (MUTEX)
  • Gérer les données et les signaux des threads

Communication réseau sous Linux

  • Présentation des principaux appels systèmes
  • Les sockets STREAM : mise en place d'un client-serveur TCP (connecté)
  • Les sockets DGRAM : mise en place d'un client-serveur en UDP (non connecté)

Gérer la mémoire sous Linux

  • L'allocation de mémoire avec malloc et ses variantes
  • Optimiser l'algorithme de malloc
  • Suivi et prévention des fuites mémoire avec mtrace
  • Faciliter le débogage de la gestion de la mémoire avec Electricfence
  • Gestion des fuites mémoires et outils associés
  • Routines avancées de traitement des blocs mémoire

Gestion avancée de bibliothèques

  • Créer des bibliothèques statiques, partagées et dynamiques
  • Présenation des principales bibliothèques Linux

Construire des applications pour Linux

  • Gestion des dépendances (automake, autoconf)
  • Utilisation avancée de make