symlink()

Создать символьную ссылку

Прототип:

#include <unistd.h>
int symlink( const char *pname,
const char *slink );

Аргументы:

pname
Строка, содержащая путь к существующему объекту.
slink
Имя создаваемой символьной ссылки.

Библиотека:

libc

Описание:

Функция symlink() создает символьную ссылку slink, указывающую на объект pname.

Права доступа к pname или факт его существования не проверяются.

Если symlink() не завершается успешно файл slink не создается/изменяется.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Компонент пути slink не имеет разрешений на поиск в директории или отсутствует разрешение на запись в родительской директории символьной ссылки.
EEXIST
Файл slink уже существует.
ELOOP
При создании символьной ссылки slink обнаружен цикл и он содержит более SYMLOOP_MAX уровней.
ENAMETOOLONG
Компонент пути slink превышает NAME_MAX байт, либо длина всего пути превышает PATH_MAX.
ENOSPC
Новая символьная ссылка не может быть создана из-за отсутствия свободной памяти в файловой системе.
ENOSYS
symlink() не реализована в целевой файловой системе, где запрошено было создание символьной ссылки slink.
ENOTDIR
Компоннет пути slink не является директорией.
EROFS
Попытка создания файла slink в файловой системе, отмеченной как "только для чтения".

Примеры:

/*
* create a symbolic link to "/usr/nto/include"
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
if ( symlink( "/usr/nto/include", "slink" ) == -1 )
{
perror( "slink -> /usr/nto/include" );
exit( EXIT_FAILURE );
}
exit( EXIT_SUCCESS );
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno, link(), lstat(), pathmgr_symlink(), pathmgr_unlink(), readlink(), unlink()




Предыдущий раздел: Описание API системной библиотеки