unlink против удаления в c ++ - PullRequest
       21

unlink против удаления в c ++

40 голосов
/ 03 февраля 2010

В чем разница между функциями удаления и отмены связи в C ++?

Ответы [ 4 ]

57 голосов
/ 03 февраля 2010

Помимо того факта, что unlink специфичен для Unix (как указал Крис), мы читаем в руководстве по POSIX:

Если путь не называет каталог, удалить (путь)эквивалентно unlink (путь).Если в качестве пути указан каталог, то удаление (путь) эквивалентно rmdir (путь).

Что касается переданного в каталог unlink, мы читаем:

Аргумент пути не должен называть каталог, если процесс не имеет соответствующих привилегий и реализация не поддерживает использование unlink () для каталогов.(...) Приложения должны использовать rmdir () для удаления каталога.

19 голосов
/ 03 февраля 2010

remove является переносимым, а unlink является специфичным для Unix.: -Р

5 голосов
/ 28 февраля 2013

Функция remove() удаляет файл или каталог, указанный путем.

Если путь указывает каталог, remove(path) является эквивалентом rmdir(path). В противном случае это эквивалент unlink(path).

От: man remove.

Удачи;)

4 голосов
/ 02 декабря 2011

unlink не привязан к unix, я не знаю, почему люди так говорят.см.и.х.хотя вам, вероятно, придется сделать что-то вроде

#define unlink _unlink

http://msdn.microsoft.com/en-us/library/1c3tczd6%28v=VS.100%29.aspx

http://msdn.microsoft.com/en-us/library/2da4hk1d%28v=VS.100%29.aspx

...