Поместить содержимое символьной ссылки в буфер
#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 системной библиотеки