在 C/C 中,取得程式運作目錄的完整路徑對於跨平台應用程式來說可能是一個挑戰。本文解決了這個問題,提供了適合不同平台和檔案系統的解決方案。
不幸的是,沒有標準的 C/C 函式庫函數可以傳回程式的目錄路徑與平台無關的方式。但是,使用特定於作業系統的 API 可以實現此結果。
在 Windows 上,GetModuleFileName 函數可以擷取模組(執行檔)的完整路徑。
char pBuf[256]; size_t len = sizeof(pBuf); int bytes = GetModuleFileName(NULL, pBuf, len); if (bytes) { return bytes; } else { return -1; // Error }
對於Linux系統,readlink函數可以存取「/proc/self/exe」來決定程式的執行檔路徑。
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; } else { return -1; // Error }
請注意,這些方法特定於某些平台和檔案系統。如果您需要更全面的解決方案,請考慮使用跨平台程式庫,例如 Boost.filesystem 或 Qt。
以上是如何取得我的C/C程式在不同平台上的執行目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!