table of contents
RENAMEAT(2) | Руководство программиста Linux | RENAMEAT(2) |
ИМЯ¶
renameat - переименовывает файл, указанный относительно файловых дескрипторов каталогов
ОБЗОР¶
#include <fcntl.h> /* определения констант AT_* */ #include <stdio.h> int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
renameat():
- Начиная с glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- До glibc 2.10:
- _ATFILE_SOURCE
ОПИСАНИЕ¶
Системный вызов renameat() работает также как системный вызов rename(2), за исключением случаев, описанных в данной справочной странице.
Если в oldpath задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор olddirfd (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в rename(2)).
Если в oldpath задан относительный путь и olddirfd равно специальному значению AT_FDCWD, то oldpath рассматривается относительно текущего рабочего каталога вызывающего процесса (как rename(2)).
Если в oldpath задан абсолютный путь, то olddirfd игнорируется.
Значение newpath интерпретируется как oldpath, за исключением того, что относительный путь интерпретируется относительно каталога, на который ссылается файловый дескриптор newdirfd.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении renameat() возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.
ОШИБКИ¶
В renameat() могут возникнуть те же ошибки, что и в rename(2). Также, в renameat() могут возникнуть следующие ошибки:
ВЕРСИИ¶
Системный вызов renameat() был добавлен в ядро Linux версии 2.6.16; поддержка в glibc доступна с версии 2.4.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2008.
ЗАМЕЧАНИЯ¶
Смотрите в openat(2) объяснение необходимости renameat().
СМОТРИТЕ ТАКЖЕ¶
2012-05-04 | Linux |