Éditeurs de liens, chargeurs et exécutables

Lorsque la fonction main d'un programme C se termine par « return 3; », que devient généralement cette valeur 3 ?

  1. AElle est transmise comme statut de sortie du programme à celui qui l'a lancé (shell, etc.)
  2. B« 3 » est affiché à l'écran
  3. CElle devient le premier argument du prochain lancement du programme
Afficher la réponse et l'explication

Réponse : A. Elle est transmise comme statut de sortie du programme à celui qui l'a lancé (shell, etc.)

La valeur de retour de main est passée à exit par le code de démarrage et transmise par l'OS au processus parent sous forme de statut de sortie. Par convention, 0 signifie succès et toute autre valeur un échec ; dans un shell, « echo $? » affiche le statut de sortie de la commande précédente. Les scripts s'appuient sur cette valeur pour décider de poursuivre ou d'arrêter le traitement.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Que se passe-t-il lorsqu'on applique la commande strip à un exécutable ?
  2. Quel est le traitement correct d'un symbole faible (weak symbol) par l'éditeur de liens ?
  3. Quel est le principal objectif de la décoration de noms (mangling), par laquelle le compilateur C++ ajoute au nom d'une fonction des informations comme le type de ses arguments pour former le nom de symbole ?
  4. Quel est l'usage le plus approprié de la fonction dlopen de Linux (équivalent de LoadLibrary sous Windows) ?
  5. Lorsque 100 processus utilisent la même bibliothèque partagée, quelle est l'utilisation correcte de la mémoire physique ?

Comparatifs sur ce thème