Книга: Программирование для Linux. Профессиональный подход

Листинг 7.5. (get-exe-path.c) Определение путевого имени текущего исполняемого файла

Листинг 7.5. (get-exe-path.c) Определение путевого имени текущего исполняемого файла

#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
/* Нахождение путевого имени текущего исполняемого файла.
   путевое имя помещается в строку BUFFER, длина которой
   равна LEN. Возвращается число символов в имени либо
   -1 в случае ошибки. */
size_t get_executable_path(char* buffer, size_t len) {
 char* path_end;
 /* чтение содержимого символической ссылки /proc/self/exe. */
 if (readlink("/proc/self/exe", buffer, len) <= 0)
  return -1;
 /* Нахождение последней косой черты, отделяющей путевое имя. */
 path_end = strrchr(buffer, '/');
 if (path_end == NULL)
  return -1;
 /* Переход к символу, стоящему за последней косой чертой. */
 ++path_end;
 /* Усечение полной строки до путевого имени. */
 *path_end = '';
 /* Длина путевого имени — это число символов до последней
    косой черты. */
 return (size_t)(path_end - buffer);
}
int main() {
 char path[PATH_MAX];
 get_executable_path(path, sizeof (path));
 printf("this program is in the directory %en", path);
 return 0;
}

Оглавление книги


Генерация: 1.319. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз