comment je reçois la version d’un programme sous linux

Sous Windows, vous pouvez faire:

CSystemInfo info; this->m_strVersion = info.GetFileVersion( CFileSystemHelper::GetApplicationPath() + _T("/test.exe") ); 

pour obtenir le numéro de version.

Comment pourrais-je le faire en C ++ sous Linux?

Windows adopte un système de ressources de version avec prise en charge d’API standard. Linux et UNIX ne disposent pas de tels concepts de haut niveau pour diverses raisons allant de l’ancienne à la redondance.

Les meilleures options consistent à interroger le système de packaging local (RPM, APT, etc.) ou à exécuter avec le paramètre de ligne de commande --version qui est un standard GNU recommandé .

Exemple de requête RPM sur la ligne de commande de l’outil Samba smbget :

 # rpm -q -f /usr/bin/smbget --queryformat '%{version}\n' 3.0.33 

Vous voulez probablement récupérer le chemin de l’exécutable en cours d’exécution.

Sous Linux, vous pouvez utiliser le système de fichiers /proc/ pseudo. Lisez la page de manuel de proc (5) pour plus d’informations.

Plus précisément, vous voulez probablement faire quelque chose comme

 char myexepath[512]; memset (myexepath, 0, sizeof(myexepath); readlink ("/proc/self/exe", myexepath, sizeof(myexepath)); 

(mais vous devriez vraiment vérifier les erreurs d’exécution ci-dessus)

Si vous vouliez simplement afficher la version d’un programme, vous devriez avoir une convention à ce sujet. --version généralement --version comme premier argument du programme.

Je vous invite à lire Advanced Linux Programming .