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

Partagez cette publication

Publications similaires

PC A PC B CHIMIE DS n°6

de profil-thowyeng-2012

d'ici là, n°6

de publie.net

Communcation par le shell
Les flux d’entr´ee-sortie
Initiation au C
◦cours n 6
Antoine Min´e
´Ecole normale sup´erieure
22 mars 2007
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell
Les flux d’entr´ee-sortie
Plan du cours
Communications :
les arguments en ligne de commande,
les variables d’environnement,
les fichiers, les flux d’entr´ee-sortie FILE*.
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Arguments en ligne de commande
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Arguments en ligne de commande
Ligne de commande :
on peut passer un nombre arbitraire d’arguments `a un programme.
Le shell effectue plusieurs op´erations sur la ligne de commande :
Expansion des caract`eres *, ?,
les noms des fichiers du r´epertoire courant sont utilis´es.
D´ecoupage des arguments au niveau des espaces,
on peut se prot´eger des caract`eres sp´eciaux par " ou \.
Exemples
$ ./a.out a b c passe a, b et c (3 arguments)
$ ./a.out "a b" c passe a b et c (2 arguments)
$ ./a.out * passe la liste des fichiers
$ ./a.out \* passe juste * (1 argument)
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Lire les arguments depuis le C
En C : ils sont pass´es en argument `a main sous forme de chaˆınes.
Prototype de main
int main(int argc, char* argv[]);
argc : nombre d’arguments disponibles,
argv : tableau de chaˆınes de caract`eres :
argv[0] 1er argument = nom du programme,
argv[1] 1er argument suppl´ementaire,
...
argv[argc-1] dernier argument,
argv[argc] pointeur NULL (invalide!).
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Exemple
Exemple de programme
Exemple de session
#include <stdio.h>
$ gcc toto.c -Wall -Wextra
int main(int argc, char* argv[])
$ ./a.out hello world 42 !
{
5 args
int i;
0: ./a.out
printf( "%i args\n", argc );
1: hello
for ( i=0; i<argc; i++ )
2: world
printf( "%i: %s\n",
3: 42
i, argv[i] );
4: !
return 1;
$
}
Attention
Un programme ne peut pas faire d’hypoth`eses sur argc.
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Passage d’arguments num´eriques
Arguments num´eriques : aussi pass´es comme des chaˆınes!
=⇒ c’est au programme C de faire la conversion.
Fonctions pr´ed´efinies
#include <stdlib.h>
int atoi (const char *nptr);
double atof (const char *nptr);
Exemple : int a = atoi(argv[2]);
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Les variables d’environnement
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Les variables d’environnement
Environnement : table d’association g´er´ee par le syst`eme.
Permet d’affecter `a une variable (chaˆıne) une valeur (chaˆıne).
L’environnement est :
initialis´e par le shell,
Exemple : USERNAME = votre login.
modifiable par l’utilisateur,
Exemples : export VAR=val, fichier .login (pour bash).
h´erit´e par le programme ex´ecut´e,
=⇒ utilisable par votre programme.
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6Communcation par le shell Arguments en ligne de commande
Les flux d’entr´ee-sortie Les variables d’environnement
Acc`es `a l’environnement depuis le C
Fonction pr´ed´efinie
#include <stdlib.h>
char* getenv(const char* name);
retourne (un pointeur sur) une chaˆıne : la valeur de name,
retourne NULL si name n’est pas d´efinie,
la chaˆıne retourn´ee ne doit pas ˆetre modifi´ee!
Exemple
char* nom = getenv("USERNAME");
printf("Bonjour %s\n", nom ? nom : "X");
◦´Antoine Min´e — Ecole normale sup´erieure Initiation au C – cours n 6