URL: https://linuxfr.org/forums/programmationautre/posts/detecter-l-os-depuis-un-code-compile Title: détecter l'OS depuis un code compilé Authors: Jean-Baptiste Faure Date: 2018年02月10日T10:05:25+01:00 License: CC By-SA Tags: fortran Score: 2 Bonjour, Je développe sous Linux un code de calcul en Fortran 2008. Ce code tourne aussi sous MS-Windows. Pour compiler les versions MS-Windows (32 ou 64 bits) je fais de la compilation croisée sous Linux. Les problèmes de portabilité entre Linux et MS-Windows se limitent essentiellement à la gestion des chemins de fichier à cause du séparateur de répertoire qui n'est pas le même sur les deux OS. J'ai donc une variable OS définie à la compilation qui permet au code de savoir pour quel OS il est compilé. Mon problème maintenant est que je veux tester la version MS-Windows sous Linux avec Wine afin de pouvoir aisément lancer les mêmes tests automatiques que pour l'exécutable Linux sans m'embêter à passer sur une VM MS-Windows. Le problème est donc que maintenant le code a besoin de savoir sur quel OS il tourne, indépendamment de l'OS pour lequel il a été compilé. À ma connaissance il n'existe pas de procédure intrinsèque Fortran qui fournisse des informations sur l'OS. En revanche comme la procédure intrinsèque execute_command_line() permet d'exécuter n'importe quelle commande shell, je peux m'affranchir des limites du langage pour détecter l'OS. Par exemple exécuter un script Python qui marcherait aussi bien sous Linux que sous MS-Windows, sauf que Python n'est pas installé par défaut sur MS-Windows. Ou bien tester une ou plusieurs commandes shell et en déduire l'OS selon ce qu'elles renvoient ou échouent à renvoyer. Ou peut-être qu'on peut obtenir l'information avec un bout de code C ?. Est-ce que vous auriez un moyen de faire cela à me suggérer ?