8 : Manipulation de fichiers ( via les descripteurs)
Exercice n o 1
Ecrire un programme r´ ´ ealisant la copie d’un fichier vers un autre. Pour ce faire, vous supposez qu’un fichier ‘‘fich entree.txt’’ existe. C’est le contenu de ce fichier qui sera recopi´ e dans un autre fichier, disons “fich sortie.txt”. L’id´ ee est de rediriger la sortie standard et l’entr´ ee standard (comme on l’a vu en cours). Pour lire le fichier
‘‘fich entree.txt’’, on peut taper la commande cat fich entree.txt.
Exercice n o 2
Utiliser l’appel syst` eme open () pour ouvrir un fichier qui sera sp´ ecifi´ e sur la ligne de commande. Lire les dix premiers octets du fichier avec l’appel syst` eme read (), puis les afficher sur la sortie standard en utilisant write ().
Pour rappel : les descripteurs 0, 1 et 2 correspondent respectivement ` a l’entr´ ee standard et
aux sortie standard et d’erreur. Par ailleurs, rappelons qu’une instruction write(fd,buffer,1024) ; permet d’´ ecrire 1024 caract` eres contenus dans buffer (d´ eclar´ e sous la forme char buffer
[1024] ;) dans le fichier de descripteur fd. De mˆ eme, l’instruction read(fd,buffer,1024) ; permet de remplir le buffer avec 1024 caract` eres lus dans le fichier d´ ecrit par fd.
Exercice n o 3
Ecrire un programme fonctionnant comme ´ cat, c’est-` a-dire ouvrant un fichier sp´ ecifi´ e sur la ligne de commande et l’affichant sur la sortie standard, en utilisant open, write et read. (Remarquer que la valeur retourn´ ee par read est le nombre de caract` eres lus ; notamment z´ ero lorsque il n’y a plus rien ` a lire.)
Exercice n o 4
Ecrire un programme qui affiche le contenu d’un fichier ` ´ a l’´ ecran et par morceau, avec des affichages tels que **********Affichage********* (et des sauts de ligne) entre chaque partie de fichier imprim´ ee. La longueur d’une partie est ´ egalement (comme le nom du fichier ` a afficher) pass´ ee en argument. On fixe la longueur maximale d’un morceau ` a, disons, 1024 octets.
Exercice n o 5
Ecrire un programme qui ex´ ´ ecute une commande linux (pass´ ee en argument) sans option (pour simplifier) mais dont le r´ esultat, au lieu d’ˆ etre affich´ e ` a l’´ ecran, est ´ ecrit dans un fichier (dont le nom est ´ egalement pass´ e en argument).
1
(2)
Exercice n o 6
Ecrire un programme qui affiche le contenu d’un fichier (dont le nom est pass´ ´ e en argu- ment) morceau par morceau, et chaque morceau est affich´ e ` a l’envers. La longueur d’un morceau est ´ egalement pass´ ee en argument (et on suppose que la longueur maximale autoris´ ee pour un morceau est 1024 octets).
Exercice n o 7
Ecrire un programme qui lance un processus fils. Le p` ´ ere affiche une chaˆıne de caract` ere (sp´ ecifi´ ee en argument) ` a l’´ ecran avec son pid, alors que le fils ´ ecrit cette mˆ eme chaˆıne de caract` ere dans un fichier (dont le nom est sp´ ecifi´ e en argument), ´ egalement avec son pid.