48

C++中的remove和unlink函数有什么区别?

4

5 回答 5

63

除了 unlink 是 unix 特定的(正如 Chris 指出的那样),我们在 POSIX 手册中阅读:

如果 path 没有命名目录,remove(path) 等价于 unlink(path)。如果 path 命名一个目录,remove(path) 等价于 rmdir(path)。

至于 directory-passed unlink,我们读到:

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

于 2010-02-03T14:09:54.970 回答
20

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

于 2010-02-03T14:06:45.430 回答
5

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

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

来自:man remove

祝你好运 ;)

于 2013-02-27T23:51:57.467 回答
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

于 2011-12-02T00:49:22.647 回答
0

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

于 2020-09-15T01:24:16.577 回答