在Windows中,您可以执行以下操作:
CSystemInfo info;
this->m_strVersion = info.GetFileVersion( CFileSystemHelper::GetApplicationPath() + _T("/test.exe") );获取版本号。
我该如何在linux上的C++中做到这一点?
发布于 2012-12-07 02:34:35
Windows采用具有标准API支持的版本资源系统,Linux和UNIX由于从遗留到冗余的各种原因没有这样的高级概念。
最好的选择是查询本地打包系统(RPM、APT等),或者尝试使用recommended GNU standard形式的--version命令行参数执行。
用于Samba工具smbget的命令行上的示例RPM查询
rpm查询格式/usr/bin/smbget -q格式‘%{ -f }\n’3.0.33
发布于 2012-12-07 02:20:17
您可能希望检索当前正在执行的可执行文件的路径。
在Linux上,您可以使用/proc/伪文件系统。有关更多信息,请阅读proc(5)手册页。
具体地说,您可能希望执行以下操作
char myexepath[512];
memset (myexepath, 0, sizeof(myexepath);
readlink ("/proc/self/exe", myexepath, sizeof(myexepath));(但你真的应该检查上面的运行时错误)
如果你只是想显示一个程序的版本,你应该有一个关于它的约定。通常接受--version作为程序的第一个参数。
我邀请您阅读Advanced Linux Programming。
https://stackoverflow.com/questions/13749932
复制相似问题