Создать ссылку на существующий файл
#include <unistd.h>int link( const char *existing,const char *new );
libc
Функция link() создает новую запись в директории с именем new для ссылки (то есть, чтобы быть ссылкой) на существующий файл с именем existing. Функция создает новую ссылку для существующего файла и увеличивает счетчик ссылок файла на единицу.
Эта реализация не поддерживает использование link() на директориях или связывание файлов между файловыми системами (разными логическими дисками). |
В случае сбоя функции ссылка не создается, и количество ссылок файла остается неизменным.
Если link() завершается успешно, поле st_ctime файла и поля st_ctime и st_mtime директории, содержащую новую запись, помечаются для обновления.
LINK_MAX
. PATH_MAX
, или компонент пути к файлу длиннее, чем NAME_MAX
. /** The following program performs a rename* operation of argv[1] to argv[2].* Please note that this example, unlike the* library function rename(), ONLY works if* argv[2] doesn't already exist.*/#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main( int argc, char** argv ){/* Create a link of argv[1] to argv[2]. */if ( link( argv[1], argv[2] ) == -1 ){perror( "link" );return (EXIT_FAILURE);}if ( unlink( argv[1] ) == -1 ){perror( argv[1] );return (EXIT_FAILURE);}return (EXIT_SUCCESS);}
POSIX 1003.1
errno, rename(), symlink(), unlink()
Предыдущий раздел: Описание API системной библиотеки