Manuel
Les fonctions C, appels système et commandes que les articles citent.
Bibliothèque C
- atoi(3)Convertit le début d'une chaîne en int. atoi ne signale aucune erreur : « abc » et « 0 » donnent tous deux 0, et un débordement est un comportement indéfini.
- calloc(3)Alloue un tableau de nmemb éléments de size octets, met tout à zéro et vérifie que le produit nmemb * size ne déborde pas. Renvoie NULL en cas d'échec.
- execvp(3)Remplace le programme du processus courant par une commande cherchée dans le PATH, avec ses arguments dans un tableau terminé par NULL.
- fflush(3)Force l'écriture des octets qu'un flux de sortie garde en mémoire. Indispensable avant un crash possible ou un fork, sans effet garanti sur stdin.
- fgets(3)Lit une ligne dans un tableau sans dépasser sa taille, garde le \n et termine toujours la chaîne. Renvoie NULL à la fin du fichier ou en cas d'erreur.
- free(3)Rend au tas un bloc obtenu par malloc, calloc ou realloc. free(NULL) est sûr, libérer deux fois ou un pointeur non alloué est un comportement indéfini.
- malloc(3)Réserve un bloc de mémoire sur le tas et renvoie son adresse, ou NULL si l'allocation échoue. Le contenu n'est pas initialisé, et le bloc est à toi jusqu'à free.
- memcpy(3)Copie n octets d'une zone mémoire vers une autre et renvoie la destination. Les deux zones ne doivent pas se chevaucher, sinon le résultat est indéfini.
- memmove(3)Copie n octets d'une zone vers une autre en donnant le bon résultat même quand les deux se chevauchent. Renvoie la destination, comme memcpy.
- memset(3)Remplit les n premiers octets d'une zone mémoire avec une valeur d'octet et renvoie l'adresse de la zone. Pratique pour mettre un tampon à zéro.
- printf(3)Écrit du texte mis en forme sur la sortie standard. Les formats à connaître (%d, %ld, %zu, %p, %s), ce que renvoie printf et les warnings -Wformat.
- putchar(3)Écrit un caractère sur la sortie standard, converti en unsigned char. Renvoie ce caractère ou EOF, et passe par le tampon de stdout comme printf.
- puts(3)Écrit une chaîne sur la sortie standard, puis un retour à la ligne. Aucun format interprété : plus simple que printf pour afficher un texte fixe.
- realloc(3)Redimensionne un bloc du tas en gardant son contenu jusqu'à la plus petite des deux tailles. Renvoie NULL sans libérer l'ancien bloc en cas d'échec.
- scanf(3)Lit l'entrée standard selon un format et range les valeurs aux adresses données. Renvoie le nombre de valeurs lues, à tester à chaque appel.
- strcmp(3)Compare deux chaînes octet par octet et renvoie un entier négatif, nul ou positif. Pourquoi == ne compare pas des chaînes, et pourquoi seul le signe compte.
- strcpy(3)Copie une chaîne, octet nul compris, dans un tampon que tu fournis. strcpy ignore la taille de la destination : c'est à toi de la garantir.
- strdup(3)Alloue avec malloc une copie d'une chaîne et renvoie son adresse, ou NULL. Dans la norme C depuis C23 ; la copie est à libérer avec free.
- strlen(3)Renvoie le nombre d'octets d'une chaîne C, sans compter l'octet nul final. Différence avec sizeof, octets et caractères, piège du size_t.
- strncpy(3)Copie au plus n octets et complète avec des octets nuls. Si la source est trop longue, la destination n'est pas terminée : strncpy n'est pas un strcpy sûr.
- strtol(3)Convertit le début d'une chaîne en long dans la base choisie, indique où la lecture s'est arrêtée via endptr et signale les débordements avec errno.
Appels système
- dup2(2)Fait d'un descripteur de fichier une copie d'un autre. C'est l'appel qui redirige la sortie standard vers un fichier ou un pipe avant un exec.
- fork(2)Duplique le processus qui l'appelle. L'enfant reçoit une copie de la mémoire et des descripteurs ouverts, et la valeur de retour dit qui est qui.
- pipe(2)Crée un tube à sens unique dans le noyau et renvoie deux descripteurs, un pour lire et un pour écrire. Combiné à fork, il relie deux processus.
- waitpid(2)Attend la fin d'un processus enfant et récupère son statut : code de sortie ou signal qui l'a tué. Sans cet appel, l'enfant terminé reste zombie.
- write(2)Appel système qui transmet des octets à un descripteur de fichier (1 pour stdout, 2 pour stderr), sans tampon ni mise en forme. Renvoie le nombre d'octets écrits.
Commandes du shell
Outils de développement
- gcc(1)Le compilateur GNU : compiler et lier un programme C, activer les warnings, garder les informations de débogage, choisir la norme, lier une bibliothèque.
- gdb(1)Le débogueur GNU : lancer un programme, l'arrêter sur une ligne, lire ses variables et la pile d'appels au moment d'un crash.
- make(1)Lit un Makefile et ne relance que les commandes dont la cible est plus ancienne que ses dépendances. Les options utiles : -n, -j, -B, -C, -f.
- nm(1)Liste les symboles d'un .o ou d'une bibliothèque : fonctions définies (T), symboles attendus ailleurs (U), variables (D, B). L'outil des undefined reference.
- valgrind(1)Exécute ton programme en surveillant chaque accès mémoire : lectures invalides, valeurs non initialisées, blocs jamais libérés.