Questions à choix multiples¶
Ces questions ont pour objectif de vous permettre de tester vous-même votre compréhension de la matière couverte par cette mission de mise en route. Elles supposent que vous avez lu le premier chapitre du syllabus contenant l’introduction à Unix et au langage C.
Question 1. Commande man(1)¶
La commande man(1) permet de lire les pages de manuel d’un système Unix. Elle est particulièrement utile pour vérifier les arguments à donner à un programme en ligne de commande ou pour savoir comment utiliser certaines fonctions de la librairie standard ou appels systèmes. Comment faut-il appeler la commande man(1) pour lister toutes les pages de manuel dont le résumé contient le mot “”intro”” ?
man -k intro
man intro
man -k *intro*
Question 2. Commande ls(1)¶
La commande ls(1) permet de lister le contenu d’un répertoire. Elle supporte de nombreux paramètres. Parmi les groupes d’affirmation suivants, un seul est valide, lequel ?
- Dans un répertoire, la commande
ls -a
sans argument permet d’afficher la liste de tous les fichiers et répertoires présents- La commande
ls -r
permet de lister les répertoires présents dans le répertoire courant en inversant l’ordre- La commande
ls -l
permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire non cachés
- Dans un répertoire, la commande
ls -a
sans argument permet d’afficher la liste de tous les fichiers et répertoires présents- La commande
ls -R
permet de lister de façon récursive le contenu du répertoire courant et de ses sous-répertoires- La commande
ls -l
permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire non cachés
- Dans un répertoire, la commande
ls *
permet d’afficher la liste de tous les fichiers et répertoires présents- La commande
ls -f
permet de lister le contenu du répertoire courant sans trier les fichiers par nom- La commande
ls -l
permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire
- Dans un répertoire, l’appel à ls(1) sans argument permet d’afficher la liste de tous les fichiers et répertoires présents
- La commande
ls -r
permet de lister de façon récursive le contenu du répertoire courant et de ses sous-répertoires- La commande
ls -l
permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire
Question 3. Premier programme en langage C¶
Depuis la publication du livre de référence [KernighanRitchie1998], le premier programme écrit en langage C affiche à l’écran la chaîne de caractères « Hello, world ». Parmi les codes source ci-dessous, un seul est entièrement correct. Lequel ?
#include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello, world\n"); }
#include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello,"); printf(" world\n"); }
#include <stdio.h>
void main(int argc, const char *argv[]) {
printf("Hello, world\n");
}
int main(int argc, const char *argv[]) {
printf("Hello, world\n");
}
#include <stdlib.h>
int main() {
printf("Hello, world\n");
}
#include <stdlib.h>
void main()
printf("Hello, world\n");
}
Question 4. Deuxième programme en langage C¶
Votre deuxième programme en langage C doit afficher à l’écran la chaîne de caractères SINF1252. Lequel parmi les programmes ci-dessous affiche-t-il correctement cette chaîne de caractères ?
#include <stdio.h>
int main(int argc, const char *argv[]) {
int a = 1252;
printf("SINF%d\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
int a = 1252;
printf("SINF");
printf("%d\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
int a = 1252;
printf("SINF%a\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
int a = 1252;
printf(SINF);
printf(%d\n, a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
int a = 1252;
printf("SINF$a\n", a);
}
Question 5. Arguments passés à un programme C¶
Considérons le programme C ci-dessous qui permet de manipuler les arguments passés en ligne de commande.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a = atoi(argv[1]);
printf("%d\n", a);
}
Parmi les groupes d’affirmations ci-dessous, un seul ne contient que des affirmations qui sont toutes vraies. Lequel ?
- Lors de l’exécution de la fonction
main
,argc
est initialisé au nombre d’arguments passés au programme (y compris le nom de l’exécutable lui-même).- Lors de l’exécution de la fonction
main
, le tableauargv[]
contient dansargv[0]
le nom du programme, dansargv[1]
le premier argument, etc.- La fonction
atoi
permet de convertir une chaîne de caractères en l’entier équivalent.
- Lors de l’exécution de la fonction
main
,argc
est initialisé à zéro.- Lors de l’exécution de la fonction
main
, le tableauargv[]
contient dansargv[0]
le premier argument, dansargv[1]
le second argument, etc.- La fonction
atoi
calcule la taille de son argument.
- Lors de l’exécution de la fonction
main
,argc
est le nombre maximum d’arguments que l’on peut lui passer.- Lors de l’exécution de la fonction
main
, le tableauargv[]
contient dansargv[0]
le premier argument, dansargv[1]
le second argument, etc.- La fonction
atoi
doit prendre comme argument une chaîne de caractères qui ne contient que des chiffres.
- Lors de l’exécution de la fonction
main
, le tableauargv[]
contient dansargv[0]
le premier argument, dansargv[1]
le second argument, etc.- La fonction
atoi
permet de convertir une chaîne de caractères en l’entier équivalent.
intro
mais uniquement dans la première section du manuel. Elle ne liste pas toutes les pages dont le résumé contient le mot cléintro
.