Есть ли эквивалент 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);
}
Другие вопросы по тегам