Книга: Программирование для 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;
}
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- 2.1.3. Функция getopt_long()
- Эффективная работа с временными файлами сортировки
- 1.2. Определение количества информации. Единицы измерения количества информации
- Использование переменной окружения ISC_PATH
- Определение версии клиента
- Единое имя файла параметров InterBase
- Определение пользовательского формата числовых данных
- Параметры конфигурационного файла InterBase
- Определение целей. Построение цепочек
- Chapter 11. Iptables targets and jumps