Есть ли эквивалент GetModuleFileName() для Linux и как его использовать?
У меня есть функция в Windows для получения адреса модуля в buf:
GetModuleFileName(0, buf, buf_size);
Я хочу сделать то же самое в Linux (о котором я мало что знаю). Я нашел функциюdladdr(X, &dlInfo)
который, кажется, делает правильную вещь. Как я понимаю, я получаю имя и другие детали (dli_sname
,dli_saddr
,dli_fname
, ..) из вdlInfo
с этой функцией.
Но что такоеX
? Я знаю, что это адрес. Но какой? Как бы я использовал это, чтобы получить тот же результат, что и в Windows?
1 ответ
любой интересный адрес, обычно адрес интересной функции модуля. Если вы хотите получить текущее имя модуля,X
может быть адресом звонящего
void X() {
// ...
dladdr(X, &dlInfo);
// or dladdr(&X, &dlInfo);
}