3

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

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

获取版本号。

我将如何在 Linux 上的 C++ 中做到这一点?

4

2 回答 2

3

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

最好的选择是查询本地打包系统(RPM、APT 等),或者尝试使用推荐的 GNU 标准--version的命令行参数执行。

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

# rpm -q -f /usr/bin/smbget --queryformat '%{version}\n'
3.0.33
于 2012-12-06T18:34:35.400 回答
2

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

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

具体来说,您可能想做类似的事情

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

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

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

我邀请您阅读高级 Linux 编程

于 2012-12-06T18:20:17.043 回答