首頁 >後端開發 >C++ >如何跨平台取得程式在C/C中的目錄?

如何跨平台取得程式在C/C中的目錄?

Patricia Arquette
Patricia Arquette原創
2024-12-22 17:03:10798瀏覽

How Can I Get a Program's Directory in C/C   Across Different Platforms?

跨平台跨檔案系統的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn