Script, langage C, langage informatique, fichier, processus, programme informatique
Ce document propose 9 exercices corrigés sur le langage C et Script.
[...] } Question 7 : void supprimer_base_donnees (Une_route** bd) { for (int i = i ) ; strdup (#include
[...] Les deux sont donc exécutés simultanément. Il n'y a pas de shell2. Ensuite le shell continue son exécution. Exercice 2 : Question 1 : 1ère solution : Ajouter export devant les lignes val1=`alea.sh` et val2=`alea.sh` dans les scripts proc1.sh et proc2.sh. [...]
[...] Code : # /bin/bash # sig1.sh ./sig2.sh & sig2PID=$ stop=0 trap "echo : SIGINT; stop=1; kill $sig2PID" SIGINT trap "echo : SIG1; kill -USR1 $sig2PID" SIGUSR1 while [ $stop = 0 ] ; do sleep 1 done # /bin/bash # sig2.sh sleep 3 stop=0 trap "echo : SIGINT; stop=1; kill $PPID" SIGINT trap "echo : SIG2; kill -USR1 $PPID" SIGUSR1 kill -USR1 $PPID while [ $stop = 0 ] ; do sleep 1 done Question 3 : # /bin/bash # sig_pere.h ./sig_fils.sh & sig2PID=$ ./sig_fils.sh & sig3PID=$ cptSIGS=0 cptIncr { cptSIGS=`expr $cptSIGS + echo : $cptSIGS } trap "cptIncr" SIGUSR1 trap "cptSIGS=20" SIGINT while [ $cptSIGS -lt 20 ] do sleep 1 done kill $sig2PID kill $sig3PID # /bin/bash # sig_fils.h while TRUE do sleep 1 kill -USR1 $PPID done Langage C Exercice 1 : Question 1 : Un_vol* creer_vol (char* num, char* h_depart, char* h_arrivee) { Un_vol* vol = malloc (sizeof (struct vol->num = strdup vol->h_depart = strdup (h_depart); vol->h_arrivee = strdup (h_arrivee); return vol; } Question 2 : Une_route* creer_route (char* nom_depart, char* nom_destination) { Une_route* route = malloc (sizeof (struct _route)); route->nom_depart = strdup (nom_depart); route->nom_destination = strdup (nom_destination); Une route nouvellement créée est initialisée avec un tableau de vols "vide". La taille allouée d'un tel tableau, rempli de pointeurs NULLs, est celle de la constante COMPAGNIE_AERIENNE_TAILLE_ALLOUEE_POUR_VOL_PAR_DEFAUT route->nb_vols = route->taille_allouee_pour_vol = COMPAGNIE_AERIENNE_TAILLE_ALLOUEE_POUR_VOL_PAR_DEFAUT; route->vol = malloc (sizeof (Un_vol*) * route->taille_allouee_pour_vol); for (int i = i taille_allouee_pour_vol; route->vol[i] = NULL; return route; } Question 3 : Une_route** base_de_donnees; #define COMPAGNIE_AERIENNE_BDD_TAILLE_MAX 100 Question 4 : int nb_routes; Cette variable est une variable globale. Elle sera déclarée dans structure_avion.h. [...]
[...] pas de vol possible printf ("\n\nRecherche de trajet ORY chercher_trajet (base_de_donnees, trois vols possibles Fin de l'exercice 5 désallocation des variables globales supprimer_base_donnees (base_de_donnees); return EXIT_SUCCESS; } Exercice 4 : Question 1 : Le fichier structure_avion.h n'a pas besoin d'être compilé. Il peut être « inséré » par le compilateur lors de la pré-compilation d'un autre fichier qui contiendrait #include « structure_avion.h », ce qui donnerait alors une « unité de compilation » qui sera compilée en tant que telle. [...]
[...] Il en ira de même pour la variable base_de_donnees. Question 5 : static void compagnie_aerienne_Une_route_realloc (Une_route* route, int nouvelle_taille) { Un_vol** nouveau_tableau_vol = malloc (sizeof (Un_vol*) * nouvelle_taille); for (int i = i nb_vols; nouveau_tableau_vol[i] = route->vol[i]; free (route->vol); route->vol = nouveau_tableau_vol; } void ajouter_horaire_vol (Une_route* pl, Un_vol* pt) { if (pl->nb_vols pl->taille_allouee_pour_vol) { cas où il faut réallouer le tableau vol. int nouvelle_taille = 1 + pl->taille_allouee_pour_vol * Un_vol** nouveau_tableau_vol = realloc (pl->vol, nouvelle_taille); if (nouveau_tableau_vol = NULL) pl->vol = nouveau_tableau_vol; Si realloc a fonctionné else sinon nous faisons le travail « à la main » compagnie_aerienne_Une_route_realloc nouvelle_taille); Sinon on le fait nous-même. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture