Programmation du syst` eme Unix en Objective Caml Xavier Leroy et Didier R´ emy

Programmation du syst` eme Unix en Objective Caml Xavier Leroy et Didier R´ emy1 c ⃝1991, 1992, 2003, 2004, 2005, 2006, 2008.2 1. INRIA Rocquencourt 2. Droits r´ eserv´ es. Distribut´ e sous licence Creative Commons Paternit´ e–Pas d’Utilisation Commerciale– Partage des Conditions Initiales ` a l’Identique 2.0 France. Voir http://creativecommons.org/ licenses/by-nc-sa/2.0/fr/. pour les termes l´ egaux. R´ esum´ e Ce document est un cours d’introduction ` a la programmation du syst` eme Unix, mettant l’accent sur la communication entre les processus. La principale nouveaut´ e de ce travail est l’utilisation du langage Objective Caml, un dialecte du langage ML, ` a la place du langage C qui est d’ordinaire associ´ e ` a la programmation syst` eme. Ceci donne des points de vue nouveaux ` a la fois sur la programmation syst` eme et sur le langage ML. Unix system programming in Objective Caml This document is an introductory course on Unix system programming, with an emphasis on communications between processes. The main novelty of this work is the use of the Objective Caml language, a dialect of the ML language, instead of the C language that is customary in systems programming. This gives an unusual perspective on systems programming and on the ML language. 2 Table des mati` eres 1 G´ en´ eralit´ es 7 1.1 Les modules Sys et Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Interface avec le programme appelant . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Traitement des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 Fonctions de biblioth` eque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 Les fichiers 13 2.1 Le syst` eme de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Noms de fichiers, descripteurs de fichiers . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 M´ eta-donn´ ees, types et permissions . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Op´ erations sur les r´ epertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5 Exemple complet : recherche dans la hi´ erarchie . . . . . . . . . . . . . . . . . . . 19 2.6 Ouverture d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7 Lecture et ´ ecriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.8 Fermeture d’un descripteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.9 Exemple complet : copie de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.10 Coˆ ut des appels syst` eme. Les tampons. . . . . . . . . . . . . . . . . . . . . . . . . 26 2.11 Exemple complet : une petite biblioth` eque d’entr´ ees-sorties . . . . . . . . . . . . 27 2.12 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.13 Op´ erations sp´ ecifiques ` a certains types de fichiers . . . . . . . . . . . . . . . . . . 31 2.14 Verrous sur des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.15 Exemple complet : copie r´ ecursive de fichiers . . . . . . . . . . . . . . . . . . . . 34 2.16 Exemple : Tape ARchive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3 Les processus 43 3.1 Cr´ eation de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2 Exemple complet : la commande leave . . . . . . . . . . . . . . . . . . . . . . . 44 3.3 Attente de la terminaison d’un processus . . . . . . . . . . . . . . . . . . . . . . . 44 3.4 Lancement d’un programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.5 Exemple complet : un mini-shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4 Les signaux 51 4.1 Le comportement par d´ efaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2 Produire des signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3 Changer l’effet d’un signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4 Masquer des signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.5 Signaux et appels-syst` eme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.6 Le temps qui passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.7 Probl` emes avec les signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3 5 Communications inter-processus classiques 61 5.1 Les tuyaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.2 Exemple complet : le crible d’´ Eratosth` ene parall` ele . . . . . . . . . . . . . . . . . 63 5.3 Les tuyaux nomm´ es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.4 Redirections de descripteurs . . . . . . . . . . . . . . . . uploads/Industriel/ cours-program-mat-ion-du-systeme-unix-en-ocaml.pdf

  • 16
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager