簡體   English   中英

在 LINUX C++ 中獲取模塊名稱和進程名稱

[英]Getting module name and process name in LINUX C++

我有一個共享庫,其中包含我想移植到 linux 的 2 個方法(當然還有其他方法):

GetProcessName() - 應該獲取可執行文件名稱或路徑(兩者都可以)
GetModuleName() - 應返回運行代碼的模塊的名稱(dll 或 exe)。

在 Windows 環境中,我使用GetModuleFileName和兩種方法的不同變體。

我已經看到了很多獲取進程名稱的解決方案,但其中大多數看起來有點像 Hacky。
而且我還沒有找到獲取模塊名稱的解決方案。

linux 中是否有類似的功能?
我該如何實施它們?

由於存在一些混淆,以下是獲取當前函數的“模塊”數據的兩個步驟。

  1. 通過 IP 寄存器或調用一個只返回__builtin_return_address(0)的小函數來獲取當前函數。 另一種方法是在foo()使用&foo
  2. 調用dladdr ,傳遞當前函數的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM