跨平台跨檔案系統的C/C取得程式目錄
很多場景下,需要確定程式所在的目錄一個程式正在執行。此資訊對於各種目的都很有價值,例如存取設定檔或日誌記錄。然而,以與平台無關和檔案系統無關的方式取得此目錄可能會帶來挑戰。
標準方法
不幸的是,標準 C/C 函式庫確實不為此目的提供標準函數。對於平台特定的解決方案,情況如下:
Windows
在 Windows 系統上,可以使用 GetModuleFileName函數擷取執行應用程式的完整路徑.
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); return bytes ? bytes : -1;
Linux
對於Linux系統中,可以利用readlink函數來讀取指向正在執行的程式的符號連結
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1); if (bytes >= 0) pBuf[bytes] = ''; return bytes;
以上是如何跨平台取得程式在C/C中的目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!