Avec ce livre, le lecteur dispose des connaissances nécessaires pour maîtriser la programmation avec les appels système Linux, en langage C, et développer des applications s'interfaçant directement avec le noyau afin d'exploiter au maximum ses fonctionnalités. L'auteur s'appuie sur les versions récentes du noyau Linux et sur les implémentations modernes des appels système. Il s'adresse principalement à un public de programmeurs...
Avec ce livre, le lecteur dispose des connaissances nécessaires pour maîtriser la programmation avec les appels système Linux, en langage C, et développer des applications s'interfaçant directement avec le noyau afin d'exploiter au maximum ses fonctionnalités. L'auteur s'appuie sur les versions récentes du noyau Linux et sur les implémentations modernes des appels système. Il s'adresse principalement à un public de programmeurs pratiquant le langage C et ayant déjà l'expérience d'une distribution GNU/Linux ou d'un système de type Unix.
Après une description générale des appels système Linux (principes, normes, documentation…), l'auteur présente leurs principaux domaines d'utilisation. Il détaille la gestion des fichiers et des répertoires puis celle des processus avant d'étudier les mécanismes de communication et de synchronisation issus du monde Unix classique : les tubes (anonymes et nommés) et les signaux. L'auteur décrit ensuite les deux ensembles de mécanismes de communication inter processus (IPC) implémentés par le noyau Linux, ceux d'origine UnixSYSTEM V et ceux, plus récents, définis dans le cadre des normes POSIX, permettant de gérer la mémoire partagée, les files d'attente de messages et les sémaphores. Il expose les techniques de communication réseau via les sockets, en mode connecté et en mode datagramme, et conclut le livre avec la gestion des threads POSIX.
Pour faciliter la compréhension et l'acquisition réelle des différents mécanismes, l'auteur présente les concepts fondamentaux et les illustre par de nombreux programmes d'exemple en langage C, courts et faciles à appréhender, téléchargeables sur le site sur le site www.editions-eni.fr.
a. Appel système execve() en contexte multithreads
b. Appel système fork() en contexte multithreads
c. Appel système exit() en contexte multithreads
d. Threads et signaux
2. Multiprocessus ou multithreads??
a. Avantages du multithreads
b. Avantages du multiprocessus
Gestion des threads
1. Création d’un thread : pthread_create()
a. pthread_create()
b. Identifiant d’un thread : pthread_self()
2. Terminaison d’un thread : pthread_exit()
a. pthread_exit()
b. Thread zombie
3. Attendre la terminaison d’un thread : pthread_join()
4. Détacher un thread : pthread_detach()
5. Annulation d’un thread : pthread_cancel()
Synchronisation des threads
1. Mutex
a. Initialisation d’un mutex
b. Utilisation d’un mutex : pthread_mutex_lock(),pthread_mutex_unlock()
2. Variables conditionnelles
a. Initialisation d’une variable conditionnelle
b. Attendre une variable conditionnelle : pthread_cond_wait()
c. Signaler un changement d’état d’une variableconditionnelle
Philippe BANQUET
Philippe BANQUET est ingénieur informaticien indépendant depuis près de 20 ans. Spécialisé dans le développement, l'administration système et réseau ainsi que dans la formation, il a enseigné Linux et Unix auprès de nombreux informaticiens. Il a conçu et développé des applications dans les langages C, C++ et Perl, ainsi que des scripts shell. Combinant son expérience concrète de terrain et sa pratique de formateur, il utilise une démarche très pédagogique s'appuyant sur des exemples fonctionnels pour transmettre efficacement ses compétences. Il est l'auteur de plusieurs ouvrages consacrés à Linux et à la programmation.