Поведение после переименования - PullRequest
0 голосов
/ 16 марта 2012

что произойдет, если мы попытаемся переименовать папку в существующую папку, содержащую некоторый файл

EX:

в папке D1 есть другая папка D2 с файлом f1, а также D3 сФайл f2, если мы попытаемся переименовать d2 -> D3

, как будет происходить удаление существующего d3 и попытка переименовать или любое странное поведение

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Отвечая "parsifal", документацию для rename () можно найти, например, в http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

Я добавляю свой собственный ответ здесь, потому что ответ от parsifal опускает важную деталь, а именно:

If new names an existing directory, it shall be required to be an empty 
directory.

В списке ошибочных номеров у нас есть

[EEXIST] or [ENOTEMPTY]
    The link named by new is a directory that is not an empty directory

Таким образом, если новые указатели на каталог, который не является пустым, rename () вернет -1, errno будет установлен в EEXIST или ENOTEMPTY, и никаких изменений не было сделано.

1 голос
/ 16 марта 2012

Документация POSIX доступна в Интернете, и поиск Google по вашему вопросу приведет вас сюда: http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

Если каталог, названный новым аргументом, существует, он должен быть удален, а старый переименован в новый.

...