La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
Télécharger Lire

Systèmes d'exploitation - Cours no. 11

De
14 pages
Syst`emes d’exploitationCours no. 11Jean-S´ebastien CoronUniversit´e du LuxembourgNovember 22, 2009Jean-S´ebastien Coron Syst`emes d’exploitationProgrammation en C sous UNIXOp´erations sur les fichiers.Les commandes fwrite, freadManipulation de processus.La commande fork()Jean-S´ebastien Coron Syst`emes d’exploitationLes fichiersOuverture d’un fichier: cr´eation d’un flux:FILE *f;f=fopen("nom.ext","r"); en lecture.f=fopen("nom.ext","w"); en ´ecriture.Ecriture dans un fichier:fprintf(f,"bonjour");´ecriture dans un fichier.Lecture dans un fichier:fscanf(f,"%d",&i); lecture d’un entier dans un fichier.Jean-S´ebastien Coron Syst`emes d’exploitationManipulation de fichierint fputc(char c,FILE *f)´ecrit le caract`ere c dans le ficher f, et incr´emente la position.int fgetc(FILE *f)lit un caract`ere, et incr´emente la position.Si fin du fichier, on obtient EOF.int feof(FILE *f)teste si on a atteint la fin du fichier (0 pour faux, non-nul pourvrai)int fclose(FILE *f)ferme le fichierJean-S´ebastien Coron Syst`emes d’exploitationLa commande fwrite()La commande fwrite():Permet de stocker des donn´ees binaires dans un fichier.int fwrite(void *ptr, int size, int nbelem, FILE*f)Ecrit nbelem ´el´ements de taille size contenus dans le tableauptr.Le nombre d’octets ´ecrits est size*nbelem.La fonction renvoie le nombre d’´el´ements stock´es.La commande fflush()fprintf et fwrite sont buff´eris´ees.fflush() permet de vider le buffer.Jean-S´ebastien Coron ...
Voir plus Voir moins
Syst`emesdexploitation
Jena-S
Cours no. 11
Jean-S´ebastienCoron
´e
Universite´duLuxembourg
November 22, 2009
bastienCoronyStse`mesdepxloitation
naeJe´S-tsabdsepxoltitaoinienCoronSyst`eme
Ope´rationssurleschiers. Les commandes fwrite , fread Manipulation de processus. La commande fork()
ammanoitPrgorXNICsensUou
´e-SstbanCieonortsySeme`edsolpxeJna
Ouverturedunchier:cre´ationdunux: FILE *f; f=fopen("nom.ext","r"); en lecture. f=fopen("nom.ext","w"); ene´criture. Ecriture dans un fichier: fprintf(f,"bonjour"); ´ecrituredansunchier. Lecture dans un fichier: fscanf(f,"%d",&i); lecture d’un entier dans un fichier.
ointitaeLierssch
lapuniMaihreitnoedction
int fputc(char c,FILE *f) e´critlecaract`ere c dans le ficher f ,etincr´ementelaposition. int fgetc(FILE *f) lituncaract`ere,etincr´ementelaposition. Si fin du fichier, on obtient EOF . int feof(FILE *f) teste si on a atteint la fin du fichier (0 pour faux, non-nul pour vrai) int fclose(FILE *f) ferme le fichier
exploita`tmesedoCorSnsyasebentieaJS´n-
e()writndefcaLammo
La commande fwrite() : Permetdestockerdesdonne´esbinairesdansunchier. int fwrite(void *ptr, int size, int nbelem, FILE *f) Ecrit nbelem ´l´ementsdetaille size contenus dans le tableau e ptr . Lenombredoctets´ecritsest size*nbelem . Lafonctionrenvoielenombrede´le´mentsstocke´s. La commande fflush() fprintf et fwrite sontbue´rise´es. fflush() permet de vider le buffer.
nJe-Sanba´emesdexploitatiotseiCnronoyStse`
lempxeEme`tdselpxeatioonti
/* exemple avec fwrite */ #include <stdio.h>
int main () { FILE *f; char buf[] = "Hello world"; f = fopen ("monfich.txt" , "w"); int n=sizeof(buf); // 12 fwrite (buf , 1 , n , f); fclose (f); return 0; }
Jae-n´SebastienCoronSys
La commande fread() : Permetdeliredesdonn´eesbinairesdansunchier. int fread(void *ptr,int size, int nbelem, FILE *f) Lit nbelem e´le´mentsdetaille size et les stocke dans le tableau ptr . Lafonctionrenvoielenombred´el´ementslus. Silanduchierestatteinte,lenombred´el´ementsluspeut eˆtreinf´erieur`a size*nbelem .
Jaebesa-n´SlpxedsenoitatioroCoentiemt`ysnS)(erdandefommaLac
lpexEme´S-nsabeaeJysnSemt`entiroCoioatitnosedxelp
int main () { FILE *f; char buf[256]; f = fopen ("monfich.txt" , "r"); int n=fread (buf , 1 , 256 , f); printf("%s\n",buf); printf("Nb de carac lus: %d\n",n); fclose (f); return 0; }
/* exemple avec fread */ #include <stdio.h>
sssuoreceLpsitatiolpxedseme
Cr´eationdunprocessus. Lorsqu’on entre une commande, le shell lance un processus pourlex´ecuter. Le shell attend la fin du processus, puis attend la commande suivante. Arborescence de processus. Chaque processus a un pe`re ,celuiquilalanc´e. Lenum´eroduprocessusdup`ereestlePPID. Unprocessuspe`repeutavoirplusieursprocessus fils Sous UNIX, un premier processus init estcre´´eavecunPID de1.Anc`etredetouslesprocessus.
onJean-S´ebsaitneoCorSnsy`t
roCoentiemt`ysnSaeJsabe´S-nsssudnpeorec´eCrioattaoiontidesplex
Duplication d’un processus. Seulefa¸condecre´erunprocessus`abasniveau. Appelsyste`me fork() Cr´eeunecopiecompleˆteduprocessus,lsdeceprocessus. Le fils change de programme en appelant exec() . La fonction exec() remplace le code et ses d ´ ar cel i onnees p u d’ lle ande. une nouve comm
Exmocenudnoituce´emand
Exe´cutiondunecommande: tar -zcvf file * Le shell se duplique avec fork() . On a alors deux processus shell identiques. Leshellpe`reattendlanduprocessuslsavec wait() . Leshelllsremplacesonex´ecutableparceluidelacommande tar avec exec() La commande tar sex´ecute.Lorsquellesetermine,le processus fils disparait. Leshellpe`reestr´eactiv´eetattendlacommandesuivante.
sdexploitationeiCnronoyStse`emanJestba´e-S
Un pour Un
Permettre à tous d'accéder à la lecture
Pour chaque accès à la bibliothèque, YouScribe donne un accès à une personne dans le besoin