Поместить содержимое символьной ссылки в буфер
#include <unistd.h>int readlink( const char *path,char *buf,size_t bufsiz );
libc
Функция readlink() помещает содержимое символьной ссылки с именем path в буфер, на который указывает buf, размер которого равен bufsiz. Содержимое возвращенной символической ссылки не включает терминатор NULL
. Длина содержимого должна определяться из структуры struct stat, возвращаемой lstat(), или значением 3
из вызова readlink().
При успешном завершении readlink(), до bufsiz байт из содержимого символической ссылки помещается в buf.
Количество байт, помещенных в буфер.
Если возникла ошибка функция возвращает -1
, код ошибки записывается в errno.
SYMLOOP_MAX
символических ссылок. NAME_MAX
символов, или целый путь превысил PATH_MAX
символов. /** Read the contents of the named symbolic links*/#include <limits.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>char buf[PATH_MAX + 1];int main( int argc, char** argv ){int n;int len;int ecode = 0;for ( n = 1; n < argc; ++n ){if ( (len = readlink( argv[n], buf, PATH_MAX )) == -1 ){perror( argv[n] );ecode++;} else {buf[len] = '\0';printf( "%s -> %s\n", argv[n], buf );}}return (ecode);}
POSIX 1003.1
errno, struct stat, lstat(), symlink()
Предыдущий раздел: Описание API системной библиотеки