rename()

Переименовать файл

Прототип:

#include <stdio.h>
int rename( const char *old,
const char *new );

Аргументы:

old
Путь к файлу, который требуется переименовать. Если путь не включает каталог, rename() ищет файл в текущем рабочем каталоге.
new
Новое имя файла. Если путь не включает каталог, rename() создает файл в текущем рабочем каталоге.

Библиотека:

libc

Описание:

Функция rename() изменяет имя файла old на заданное имя new.

Если имя new занято уже существующим файлом или пустым каталогом, rename() перезаписывает его.

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

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

Коды ошибок:

EACCESS
У вызывающей программы нет разрешения на поиск одного из компонентов префикса пути или один из каталогов, содержащих old и new запрещает запись .
EBUSY
Директория, называнная old или new не может быть переименована, поскольку ее использует другой процесс.
EEXIST
Файл new является директорией, содержащей файлы.
EINVAL
Путь к директории new directory содержит директорию old.
EISDIR
Файл new является директорией, а old является файлом.
ELOOP
Слишком много уровней символических ссылок.
EMLINK
Файл old является директорией, а количество ссылок родительского каталога new превысит LINK_MAX.
ENAMETOOLONG
Длина строки у old или new превышает PATH_MAX.
ENOENT
Файл old не существует, или old или new являются пустыми строками.
ENOSPC
Каталог, который будет содержать new, не может быть расширен.
ENOSYS
Функция rename() не реализована для файловой системы, указанной в old или new.
ENOTDIR
Компонент префикса пути не является каталогом, или old является каталогом, а new - нет.
ENOTEMPTY
Файл, указанный в new, представляет собой каталог, содержащий файлы.
EROFS
rename() повлияет на файлы в файловой системе, доступной только для чтения.
EXDEV
Файлы или каталоги, названные old и new, находятся в разных файловых системах.

Примеры:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
if ( rename( "old.dat", "new.dat" ) )
{
puts( "Error renaming old.dat to new.dat." );
return (EXIT_FAILURE);
}
return (EXIT_SUCCESS);
}

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

ANSI, POSIX 1003.1

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

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

errno




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