Visuel de Programmation linux

La programmation Unix/Linux sous toutes ses facettes
Traduction du best-seller americain Beginning Linux Programming, cet ouvrage vous conduira rapidement à une bonne maîtrise des différents aspects de la programmation Linux, de l'écriture de scripts shell à la programmation Internet, en passant par la construction d'interfaces graphiques X Window ou Gnome.

La partie centrale de l'ouvrage est consacrée à la programmation système en langage C, depuis la prise en main des outils GNU jusqu'aux aspects les plus avancés (threads, communication interprocessus, sockets). L'ouvrage s'achève par un chapitre d'initiation au développement de pilotes de périphériques (device drivers), excellente manière de découvrir le fonctionnement du noyau Linux.

La plupart des langages et techniques de programmation décrits dans l'ouvrage sont illustrés à travers une étude de cas (application de gestion d'une collection de CD audio), dont les fonctionnalités sont enrichies au fil des chapitres et dont le code source est disponible sur le site Wrox

À qui s'adresse ce livre ?

  • Aux utilisateurs Linux avertis voulant s'initier à la programmation de leur système favori.
  • Aux administrateurs de systèmes Unix ou Linux souhaitant aller au-delà de l'écriture de simples scripts shell.
  • Aux programmeurs expérimentés venant d'autres environnements (Windows, gros systèmes) et souhaitant migrer vers des plates-formes Unix ou Linux.
  • À tous les étudiants en informatique, pour lesquels Linux constitue une plate-forme idéale d'initiation à la programmation.
PREREQUIS : l'ouvrage suppose une bonne pratique de Linux ou de tout autre système Unix, ainsi que des notions de programmation en langage C.

L'exposé est totalement indépendant de la distribution Linux utilisée puisqu'il repose sur des outils GNU et sur des bibliothèques fournis en standard dans toutes les distributions (Caldera, Debian, Mandrake, RedHat, SuSE, etc.). Ces outils et bibliothèques étant également disponibles sur toutes les plates-formes Unix du marché, l'ouvrage peut etre utilisé comme guide générique de programmation Unix.

Au sommaire

  • Introduction à l'écriture de scripts shell
  • Structure et compilation d'un programme Unix/Linux en langage C
  • Gestion des fichiers et des entrées/sorties
  • Gestion des terminaux (GTI, termios, terminfo)
  • Utilisation des curses
  • Gestion de la mémoire
  • Verrouillage des fichiers (lock files)
  • Gestion des données avec dbm
  • Outils de développement : commande make et makefiles
  • Contrôle du code source avec RCS, SCCS ou CVS
  • Distribution avec patch, tar et gzip
  • Debogage avec gdb et autres outils
  • Processus et signaux
  • Threads Posix
  • Communication interprocessus et tubes (pipes)
  • Application client-serveur avec tubes FIFO
  • Semaphores, memoire partagee et files d'attente de messages
  • Programmation réseau avec les sockets
  • Introduction au langage Tcl
  • Programmation X Window avec Tcl et la boîte à outils Tk
  • Programmation GNOME en langage C avec la bibliothèque GTK+
  • Introduction au langage Perl
  • Construction d'une application Web avec CGI
  • Introduction au noyau Linux et à l'ecriture de pilotes de périphériques (device drivers)

Les livres de la collection Solutions developpeurs/Autoformation sont conçus avec le souci de rendre l'apprentissage de la programmation plus facile que jamais, tout en conduisant rapidement le lecteur vers une maîtrise des aspects avancés des langages et outils de développement.

Ces ouvrages s'appuient pour cela sur des méthodes pédagogiques éprouvées : exemples simples et pertinents pour introduire les nouveaux concepts, enchainement sans heurts des explications, exercices corrigés de mise en pratique des acquis : tout est conçu pour que les débutants (et les faux débutants) puissent accéder rapidement aux fonctions les plus complexes des produits et réaliser ainsi de véritables applications professionnelles.

  • Page

    61

    dans [ -d "$fichier" ] remplacer 'fichier' par 'file' ainsi que dans : echo "Le premier répertoire débutant par fred est $fichier"

  • Page

    76

    Passons à la pratique ! Les paramètres Dans l'exemple 1 afin d'obtenir les bons resultats modifier comme suit: bar=/usr/local/etc/local/networks # echo ${bar%local*} echo ${bar%/local*} # echo ${bar%%local*} echo ${bar%%/local*}

  • Page

    86

    paragraphe 7: à la fin de la structure "case $nblignes in" ,il semble manquer les ";;" à la fin de l'option 2)

  • Page

    87

    code de la fonction trouve_cd(), 15e ligne: if [ "$asklist" = "y" ]; then ...à remplacer par: if [ "$asklist" = "o" ]; then ...asklist se voit affecté o ou n au début de la fonction p.86.

  • Page

    89

    paragraphe 12: dans la construction "case $choix_menu in" l'option b) correspond en fait à l'option d) de la fonction "fixe_menu_choix" pour dénombrer les CD (ou l'inverse...)

  • Page

    89

    code de la routine principale, 3 lignes avant le bas de page: q | Q ) quit=y;; ...à remplacer par: q | Q ) quit=o;; ...on quitte la boucle while lorsque quit est à o.

  • Page

    92

    "Répertoires", 2e paragraphe: "Vous pouvez voir le numéro d'i-noeud d'un fichier en tapant ln -i." ...à remplacer par: "Vous pouvez voir le numéro d'i-noeud d'un fichier en tapant ls -i."

  • Page

    103

    Dans le programme copie_systeme.c : Les variables "dedans" et "dehors" ne sont pas définies. Les remplacer respectivement par "entree" et "sortie".

  • Page

    104

    Dans le programme copie_bloc.c : * Les variables "in" et "out" ne sont pas définies. Les remplacer respectivement par "entree" et "sortie". * Dans la définition des variables supprimer l'accent sur "entrée". (entrée != entree). * La variable "nlu" n'est pas déclarée. La déclarer comme INTEGER.

  • Page

    106

    Dernier paragraphe avant la liste: Remplacer "Les drapeaux de autorisations..." par "Les drapeaux d'autorisations..."

  • Page

    115

    "Voici les uatres spécifications de conversion: ... - %f, %e, %g lecture d'un entier en virgule flottante" Comprendre "lecture d'un réel en virgule flottante", ou d'un "nombre" en virgule flottante, mais pas d'un entier.

  • Page

    383

    A propos de waitpid : "L'option la plus utile est WNOHANG; elle permet d'empêcher l'appel à waitpid et de suspendre l'exécution de l'appelant." Le "et" est de trop, il faut lire: "L'option la plus utile est WNOHANG; elle permet d'empêcher l'appel à waitpid de suspendre l'exécution de l'appelant."

  • Page

    386

    tableau des signaux: Le premier cité est SIGABRT et non pas SIGABORT.

  • Page

    850

    ligne 3 erreur sur le type de *vma. Original : static int schar_mmap(struct file *file, struct struct_zone_mv *vma); Correction : static int schar_mmap(struct file *file, struct vm_area_struct *vma);

  • Page

    883

    tableau des prototypes de get_user et put_user: "put_user(void *x, const void *adr) ..." Il y a inversion des paramètres, le proto est: put_user(const void *adr, void *x) (le texte explicatif en regard est correct)

Richard Stones

Richard Stones - Richard Stones graduated from university with an electrical engineering degree, but decided software was more fun. He has programmed in a variety of languages, but only admits to knowing VB under duress. He has worked for a number of companies, from the very small to the very large, in a variety of areas, from real-time embedded systems upward. He is currently employed by Celesio AG as a systems architect,...

Visuel de Richard Stones

Neil Matthew

Neil Matthew - Neil Matthew graduated with a degree in mathematics from the University of Nottingham in the UK and has been using and programming computers for over 30 years. Neil has used just about every flavor of UNIX since 1978, right up to today's Linux distributions. He has co-authored several computing books with Richard Stones, including Beginning Linux Programming, Professional Linux Programming, and Beginning...

Visuel de Neil Matthew

Fabrice Lemainque

Visuel de Fabrice Lemainque