![](/img/trans.png)
[英]how do I implement functionality similar to linux /proc/version in a c++ program?
[英]how I get version of a program in linux
在Windows中,您可以:
CSystemInfo info;
this->m_strVersion = info.GetFileVersion( CFileSystemHelper::GetApplicationPath() + _T("/test.exe") );
獲取版本號。
我如何在Linux上用C ++做呢?
Windows采用具有標准API支持的版本資源系統,Linux和UNIX由於遺留系統和冗余等各種原因而沒有這樣的高級概念。
最佳選擇是查詢本地打包系統(RPM,APT等),或嘗試使用--version
命令行參數執行,這是推薦的GNU標准 。
在Samba工具smbget
命令行上查詢RPM smbget
:
# rpm -q -f /usr/bin/smbget --queryformat '%{version}\\n' 3.0.33
您可能想要檢索當前正在執行的可執行文件的路徑。
在Linux上,您可以使用/proc/
pseudo-file系統。 閱讀proc(5)手冊頁了解更多信息。
具體來說,你可能想要做類似的事情
char myexepath[512];
memset (myexepath, 0, sizeof(myexepath);
readlink ("/proc/self/exe", myexepath, sizeof(myexepath));
(但你真的應該檢查上面的運行時錯誤)
如果您只是想顯示程序的版本,那么您應該有一個約定。 通常接受--version
作為程序的第一個參數。
我邀請您閱讀高級Linux編程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.