paumier@univ-mlv.fr 1 Cours de C Commandes Linux de base & introduction au C Sé
paumier@univ-mlv.fr 1 Cours de C Commandes Linux de base & introduction au C Sébastien Paumier Illustrations provenant du site http://tux.crystalxp.net/ paumier@univ-mlv.fr 2 Objectif du cours de C ●apprendre le langage C ●analyser un problème pour écrire le programme qui le résout, de façon élégante et modulaire ●coder proprement ●savoir respecter un cahier des charges lors de projets ●être au niveau pour le cours de système en IR2 paumier@univ-mlv.fr 3 Planning ●Slot 0: stage de rentrée de 3 jours ●Slot 1: – 5 cours, 5 TD sur machine – 1 examen ●Slot 2: – 5 cours, 5 TD sur machine – 1 examen paumier@univ-mlv.fr 4 Objectif du stage de rentrée ●mise à niveau sur: – les commandes système de base – l'écriture et la compilation propre d'un programme C simple ●3 journées intensives: – 2h de cours, 2h de TD, 4h de TP (1 par poste) ●dernière journée: – TP noté pour évaluation paumier@univ-mlv.fr 5 Linux ●système d'exploitation libre – open source – gratuit ●multi-utilisateurs ●support natif du réseau ●interface graphique indépendante du système paumier@univ-mlv.fr 6 Différences principales avec Windows ●Pas de C:\... D:\... – racine unique / – périphériques vus comme des sous- répertoires. Ex: /mnt/floppy pour A:\ ●Casse des noms de fichiers – Hello.txt ≠ hello.txt ≠ HELLO.TXT ●Droits d'accès sur les fichiers paumier@univ-mlv.fr 7 Compte utilisateur ●identité = login+mot de passe ●espace disque privé /home/ens/paumier ou ~paumier – on y est par défaut quand on se loge ●appartenance à un ou des groupe(s) paumier@univ-mlv.fr 8 Lister un répertoire ●commande ls cogmu/ plp/ projet.html ●option -l pour les détails total 16 drwxr-xr-x 3 paumier igm 4096 sep 18 2006 cogmu/ drwxr-xr-x 2 paumier igm 4096 jui 26 2006 plp/ -rw-r--r-- 1 paumier igm 4764 nov 20 2006 projet.html ●jokers: ls *.html file?.bin paumier@univ-mlv.fr 9 Fichiers spéciaux et cachés . = répertoire courant .. = répertoire parent .xxxxx = fichier caché – utiles pour des fichiers de configuration Fichiers visibles avec ls -a ./ ../ .bashrc cogmu/ plp/ projet.html paumier@univ-mlv.fr 10 Répertoires ●pwd affiche le répertoire courant ●on change de répertoire avec cd – relatif: ●cd toto ●cd .. ●cd ../W3/prog – absolu: ●cd /tmp/test – retour à la racine du compte: ●cd ou cd ~ ou cd ~paumier paumier@univ-mlv.fr 11 Répertoires ●créer un répertoire mkdir toto ●détruire un répertoire rmdir toto si toto est vide rm -ri toto sinon rm -rf toto pour éviter de confirmer pour chaque fichier ●rm marche aussi pour les fichiers paumier@univ-mlv.fr 12 Copie et renommage ●copie de fichier: cp toto ../titi ●copie de répertoire: cp -r toto/ tutu ●renommage ou déplacement: mv toto tutu mv toto ../../test/toto.txt paumier@univ-mlv.fr 13 Droits d'accès -rwxrw-r-- 1 paumier igm 0 jun 22 11:02 toto - rwx rw- r-- - = fichier d = répertoire (directory) Droits du possesseur du fichier (paumier) Droits du groupe igm Droits de tous les autres utilisateurs paumier@univ-mlv.fr 14 Droits d'accès fichier F répertoire R r on peut lire F w x on peut voir le contenu de R on peut écrire dans F ou le détruire on peut créer des fichiers ou des répertoires dans R on peut exécuter F si F est un exécutable on peut rentrer dans R avec cd Pour pouvoir créer un fichier titi/tutu, on doit avoir les droits w et x sur titi paumier@univ-mlv.fr 15 Changer les droits ●chmod u=wx toto : fixe à wx les droits de l'utilisateur (user) pour le fichier toto, et laisse les autres inchangés: – avant: -rw-r--r-- – après: --wxr--r-- ●g modifie les droits du groupe ●o modifie ceux des autres (others) ●a modifie tous les droits (all) paumier@univ-mlv.fr 16 Changer les droits ●+ ajoute les droits indiqués chmod a+x toto – avant: -rw-r--r-- – après: -rwxr-xr-x ●- enlève les droits indiqués chmod g-r,o-r toto – avant: -rw-r--r-- – après: -rw------- paumier@univ-mlv.fr 17 Lancer une tâche de fond ●anjuta dans un terminal lance un éditeur, mais la console n'a plus la main ●pour garder la main: $>anjuta& [1] 2715 – lance un autre processus paumier@univ-mlv.fr 18 Voir les processus en cours ●ps : affiche les processus du terminal courant PID TTY TIME CMD 1962 pts5 00:00:00 bash 3517 pts5 00:00:00 emacs 3518 pts5 00:00:00 ps ●ps -u paumier : affiche tous les processus de l'utilisateur paumier paumier@univ-mlv.fr 19 Tuer un programme ●ctrl+c : tue le programme ●ctrl+z : stoppe le programme – on pourra y revenir avec fg ●kill -3 PID : tue le programme ●kill -9 PID : tue le programme sauvagement (dernier recours) ●xkill : permet de sélectionner une fenêtre paumier@univ-mlv.fr 20 Afficher un fichier ●cat toto: affiche le contenu de toto ●more toto: idem, avec défilement si toto ne tient pas sur l'écran ●less toto: mieux que more (on peut remonter) ●head -n 17 toto: affiche les 17 premières lignes de toto ●tail -n 17 toto : affiche les 17 dernières lignes de toto paumier@univ-mlv.fr 21 Rediriger les sorties ●ls > toto : redirige la sortie standard de ls dans le fichier toto ●ls >> toto : idem, mais ajoute les données à la fin de toto ●ls 2> toto : redirige la sortie d'erreur dans le fichier toto ●ls 2>> toto : idem, avec ajout en fin paumier@univ-mlv.fr 22 Rediriger les sorties >$ ls -l total 8 d--------- 2 paumier igm 4096 jun 22 17:13 titi/ -rw-r--r-- 1 paumier igm 11 jun 22 17:13 tutu >$ ls * > list 2> err >$ cat list tutu >$ cat err ls: titi: Permission denied paumier@univ-mlv.fr 23 Fichier spécial /dev/null ●trou noir ●si on veut ne voir que les sorties d'erreur de ls: ls > /dev/null paumier@univ-mlv.fr 24 Chercher dans des fichiers ●grep xxx *.txt : affiche toutes les lignes des fichiers *.txt qui contiennent xxx >$ grep passwd ind* index:chpasswd (8) - update password file in batch index2:passwd [ssl-passwd] (1) - compute password hashes ind:rpc.yppasswdd [rpc] (8) - NIS password update daemon paumier@univ-mlv.fr 25 Obtenir de l'aide ●man xxx : donne la page de manuel de la commande xxx ●man -k xxx : donne les pages de manuel dont le titre contient xxx ●xxx --help : convention pour toutes les commandes du système paumier@univ-mlv.fr 26 Introduction au C ou comment compiler proprement son premier programme paumier@univ-mlv.fr 27 Le langage C ●C, parce qu'après le langage B :) ●1972, Laboratoires Bell, Dennis Ritchie & Kenneth Thompson ●1989: norme ANSI C ●langage impératif ●à la fois haut et bas niveau ●programmation système (noyau Linux) paumier@univ-mlv.fr 28 Quelques références ●B.W.Kernighan D.M.Ritchie, Le langage C ●http://fr.wikibooks.org/wiki/Programmation_C + tous les livres qui prennent la poussière à la bibliothèque... ●rendu: charte des projets http://igm.univ-mlv.fr/~paumier/charte_des_projets.html paumier@univ-mlv.fr 29 Qu'est-ce qu'un programme? Compilation .c Instructions dans un langage lisible par un humain .c .o .o libs Édition de liens Fichiers objets Programme exécutable } } } paumier@univ-mlv.fr 30 Les fichiers sources ●fichiers textes contenant les instructions ●extension spéciale .c ●syntaxe très précise à respecter ●séparateurs=espace+tab+retour à la ligne ●programmation modulaire: un fichier par thème: – bibliothèque mathématique, graphique, ... paumier@univ-mlv.fr 31 Le premier programme /* HelloWorld.c * Le classique des classiques */ #include <stdio.h> int main(int argc,char* argv[]) { printf("Hello world!\n"); return 0; } Inclusion de la bibliothèque contenant la fonction printf Des commentaires paumier@univ-mlv.fr 32 /* HelloWorld.c * Le classique des classiques */ #include <stdio.h> int main(int argc,char* argv[]) { printf("Hello world!\n"); return 0; } Le premier programme main est toujours la fonction principale d'un programme C Retourne un entier argc : nombre de paramètres argv : les paramètres paumier@univ-mlv.fr 33 /* HelloWorld.c * Le classique des classiques */ #include <stdio.h> int main(int argc,char* argv[]) { printf("Hello world!\n"); return 0; } Le premier programme Début de bloc d'instructions La fonction se termine et renvoie 0 Fonction affichant à l'écran une chaîne de caractères Fin de bloc d'instructions paumier@univ-mlv.fr 34 Le premier programme ●compilation: $>gcc HelloWorld.c -c $>gcc HelloWorld.o -o HelloWorld ou, en une étape: $>gcc HelloWorld.c -o HelloWorld ●exécution: $>./HelloWorld Hello world! paumier@univ-mlv.fr 35 Un autre exemple #include <stdio.h> #define PI 3.14 float a,b; float sum(float x,float y) { return x+y; } int main(int argc,char* argv[]) { float c,d; a=PI; b=1; c=sum(a,b); printf("%f + %f = %f\n",a,b,c); printf("d=%f\n",d); return 0; } Constante Variables globales Une fonction Le C permet l'utilisation de variables non initialisées !!! paumier@univ-mlv.fr 36 Le même en deux fichiers #include <stdio.h> #define PI 3.14 float a,b; extern float sum(float x,float y); int main(int argc,char* argv[]) { float c,d; a=PI; b=1; c=sum(a,b); printf("%f + %f = %f\n",a,b,c); printf("d=%f\n",d); return 0; } Déclaration d'une fonction définie dans un autre fichier f1.c float sum(float x,float y) { return x+y; } f2.c paumier@univ-mlv.fr 37 Le même en trois fichiers #include <stdio.h> #include "f2.h" #define PI 3.14 float a,b; int main(int argc,char* argv[]) { float c,d; a=PI; b=1; c=sum(a,b); printf("%f + %f = %f\n",a,b,c); printf("d=%f\n",d); return 0; } f1.c float sum(float x,float y) { return x+y; } f2.c float sum(float x,float y); f2.h Inclusion du fichier header qui contient la définition de sum paumier@univ-mlv.fr 38 Sources et headers ●.c: code – on n'inclut pas les .c ! ●.h: – définitions des fonctions visibles de l'extérieur du .c – définitions de uploads/Industriel/ c1-linux-et-intro-c.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 15, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.1909MB