C on renvoit générealement un 0, si j'exécute un programme C ou se trouvera cette valeur?
Le standard du C prévoit seulement que :
- ces valeurs sont des valeurs de statut de fin destinées à l'environnement d'exécution, qui peut, on non, faire usage de ces informations,
- que si la valeur de retour est 0 ou EXIT_SUCCESS, c'est une information de succès qui est donnée,
- que si c'est EXIT_FAILURE, c'est une information d'erreur,
- et que toute autre valeur peut éventuellement avoir une signification en fonction de l'environnement d'exécution.
Sauf environnement particulier (embarqué), dès lors qu'un programme est lancé dans un système d'exploitation, il faut intégrer cette valeur de retour pour faire du code conforme au standard.
Dans sa réponse, jisisv a expliqué comment récupérer ce code au moyen du shell cmd ou bash, et cela marchera si le programme est lancé, et l'interrogation des variables d'environnement faite,
à partir du même shell. Donc si : (1) tu ouvres un shell, (2) tu lances le programme, (3) tu vérifies la variable d'environnement.
A partir de tes programmes C, si tu lances d'autres programmes et que tu veux récupérer la valeur de retour, tu devras faire autrement, et également différemment selon les systèmes pour être sûr de récupérer la bonne information.
Sous Windows, c'est avec l'exécution du processus passant par
CreateProcess() que tu vas pouvoir récupérer l'info avec
GetExitCodeProcess()
exemples :
https://docs.microsoft.com/en-us/windows/win32/procthread/creating-processes?redirectedfrom=MSDN
https://www.codeproject.com/tips/333559/createprocess-and-wait-for-result
Sous Linux et systèmes de type Unix (POSIX), un fork avec un waidpid suffit
https://linux.die.net/man/2/waitpid
(la page de manuel donne un exemple)
Utiliser
system() ne te permettra pas nécessairement de récupérer une information fiable, car le standard ne définit rien d'obligatoire pour la valeur retournée par cette commande, qui est à l'appréciation de l'implémentation de C et du système.
Dal