[英]gcc share library initializer function access to current executable name
我有一個需要運行構造函數 function 的共享庫(Linux 上的 gcc,用 C++ 編寫)。 這個構造函數 function 需要處理一個配置文件,該配置文件可能與可執行文件位於同一目錄或另一個預定義位置。 換句話說,我需要從庫構造函數 function 中知道argv[0]
的值。 這樣做的正確方法是什么?
static void __attribute__((constructor)) mylib_init()
{
// need access to config file which is in the same directory as executable
}
在 gcc 的構造函數中獲取argv
的簡單方法。
但是,在 Linux 上,您可以讀取/proc/self/cmdline
並獲取命令名稱。 您可以從中找出您感興趣的目錄。
/proc/self/cmdline
將包含所有 arguments,包括命令,由 null 字符分隔。
看起來glibc
通過extern const char *__progname_full;
看這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.