L3 Info UFR Sciences&Techniques I5TC1
TP d’introduction ` a la programmation syst` eme en C
Dans chacun des exercices ci-dessous, vous prendrez soin de g´erer correctement les erreurs (utiliser syst´ematiquementperrorapr`es chaque fonction syst`eme)
Exercice 1-Entr´ees/sorties format´ees
Lire une date sous la forme jour, mois, ann´ee (trois entiers) et jour de la semaine (chaine de caract`eres) et afficher cette date sous la forme:
- version fran¸caise: JJ-MM-AA - version anglaise: MM/JJ/AA
- version ”´ecole primaire”: jour JJ mois 20YY Exercice 2-Allocation dynamique d’espace m´emoire
Reprendre l’exercice 1 en construisant dans une chaine de caract`eres la version format´ee de la date,
1. En utilisant des variables de la formechar nom[xx];
2. en utilisant des variables de typechar *nomet les fonctionsmallocetsizeof.
Exercice 3-Manipulations de fichiers
Ecrire un programme C qui demande une liste de renseignements pour cr´eer des comptes´ utilisateurs sur un cluster de machines: nom du compte, r´epertoire de login, groupe. les informations correspondantes sont stock´ees dans un fichier `a raison d’une ligne par compte.
Ecrire ce programme:´
1. En utilisant les sorties format´ees (fprintf), les informations sur chaque ligne sont s´epar´ees par des doubles points ”:”.
2. En utilisant les op´erations d’E/S de bas niveau (open, readet write, close). Est-il n´ecessaire d’avoir un s´eparateur de champs?
3. En utilisant les op´erations d’E/S de haut niveau (fopen,freadetfwrite,fclose). Est-il n´ecessaire d’avoir un s´eparateur de champs?
Exercice 4-Test de fork Ecrire un programme C dans lequel on lance un programme fils´ (par fork). Le processus p`ere et le processus fils doivent chacun afficher leur propre pid et celui de leur p`ere (en utilisantgetpidetgetppid).
Exercice 5-Fork et fichier Ecrire un programme C dans lequel on lance un programme´ fils (par fork). Le processus p`ere et le processus fils doivent chacun ´ecrire dans un meme fichier cinq message successifs de la forme:
”message numero xxx du processus p`ere de pid yyy”
ou
”message numero xxx du processus fils de pid yyy”.
1
1. Comment sont g´er´ees l’ouverture et la fermeture du fichier?
2. V´erifier que les zones tampon (buffer) du fichier sont transmises du p`ere au fils au moment du fork.
Pour les plus rapides:
Exercice 6-Variables d’environnement
1. Afficher depuis un programme C la valeur d’une variable d’environnement dont le nom est fourni par l’utilisateur (getenv).
2. Initialiser, depuis un programme C, une variable d’environnement (setenv). Quelle est la port´ee et la dur´ee de vie d’une telle variable?
Exercice 7-Informations sur un fichierUtiliser la structurestatet les fonctionsstatou fstatpour afficher des informations sur un fichier donn´e.
2