我如何在linux中获得程序版本

时间:2012-12-06 18:15:35

标签: c++ linux windows port

在Windows中,您可以执行以下操作:

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

获取版本号。

我如何在Linux上用C ++做呢?

2 个答案:

答案 0 :(得分:3)

Windows采用具有标准API支持的版本资源系统,Linux和UNIX没有这样的高级概念,原因有很多,从遗留到冗余。

最佳选择是查询本地打包系统(RPM,APT等),或尝试使用--version命令行参数执行。{/ p>

Samba工具smbget的命令行上的RPM查询示例:

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

答案 1 :(得分:2)

您可能想要检索当前正在执行的可执行文件的路径。

在Linux上,您可以使用/proc/伪文件系统。阅读proc(5)手册页了解更多信息。

具体来说,您可能想要做类似

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

(但你真的应该检查上面的运行时错误)

如果您只想显示程序的版本,则应该有一个约定。通常接受--version作为程序的第一个参数。

我邀请您阅读Advanced Linux Programming