2012-12-06 42 views
3

得到一個版本的程序在Windows中,你可以這樣做:我如何在Linux

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

拿到的版本號。

我如何在Linux上使用C++?

+1

它通常取決於程序。您可以嘗試僅使用「--version」選項來調用它並解析其輸出,但不要求程序在Linux中公開版本號。您也可以嘗試與包管理器進行交互,但也有其中一些。 –

+1

你描述的是一個「窗口事物」。它不存在於* nix中。 –

回答

2

您可能想要檢索當前正在執行的可執行文件的路徑。

在Linux上,您可以使用/proc/僞文件系統。閱讀proc(5)手冊頁獲取更多信息。

具體來說,你可能想要做像

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

(但你真的應該檢查上面運行時錯誤)

如果你只是想顯示程序的版本,你應該有關於它的一個約定。通常接受--version作爲程序的第一個參數。我們邀請您閱讀Advanced Linux Programming

+0

感謝您的快速回復 –

3

Windows採用具有標準API支持的版本資源系統,Linux和UNIX由於各種原因(從遺留到冗餘)而沒有這種高級概念。

最佳選擇是查詢本地打包系統(RPM,APT等),或嘗試使用--version命令行參數執行,該命令行參數爲recommended GNU standard。上針對samba工具smbget命令行

實施例RPM查詢:

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