在c ++中unlink vs remove

时间:2010-02-03 14:03:57

标签: c++ unix posix erase

C ++中删除和取消链接函数有什么区别?

5 个答案:

答案 0 :(得分:56)

除了unlink是特定于unix的事实(正如Chris所指出的),我们在POSIX手册中读到:

  

如果path没有命名目录,则remove(path)等同于unlink(path)。   如果路径为目录命名,则remove(path)等同于rmdir(path)。

对于目录传递unlink,我们读到:

  

path参数不能命名目录,除非进程具有适当的权限,并且实现支持在目录上使用unlink()。 (...)应用程序应使用rmdir()删除目录。

答案 1 :(得分:19)

remove是可移植的,unlink是特定于Unix的。 :-P

答案 2 :(得分:5)

remove()函数删除path指定的文件或目录。

如果path指定目录,remove(path)相当于 rmdir(path)。否则,它相当于unlink(path)

来自:man remove

祝你好运;)

答案 3 :(得分:4)

unlink不是特定于unix的,我不知道为什么人们这么说。见io.h.虽然你可能不得不做类似

的事情
#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

答案 4 :(得分:0)

remove()是C ++标准(N4860 29.11.14.30)的一部分。 unlink()不是。