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

Листинг 8.9. (print-symlink.с) Отображение адресата символической ссылки

Листинг 8.9. (print-symlink.с) Отображение адресата символической ссылки

#include «errno.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
 char target_path[256];
 char* link_path = argv[1];
 /* Попытка чтения адресата символической ссылки. */
 int len =
  readlink(link_path, target_path, sizeof(target_path));
 if (len == -1) {
  /* Функция завершилась ошибкой. */
  if (errno == EINVAL)
   /* Это не символическая ссылка. */
   fprintf(stderr, "%s is not a symbolic linkn", link_path);
  else
   /* Произошла какая-то другая ошибка. */
   perror("readlink");
  return 1;
 } else {
  /* Завершаем путевое имя нулевым символом. */
  target_path[len] = '';
  /* Выводим результат. */
  printf("%sn", target_path);
  return 0;
 }
}

Ниже показано, как создать символическую ссылку и проверить ее с помощью программы print-symlink:

% ln -s /usr/bin/wc my_link
% ./print-symlink my_link
/usr/bin/wc

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


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