在c ++中unlink vs remove

SyB*_*Ber 41 c++ unix posix erase

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

Kor*_*icz 57

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

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

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

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


Chr*_*ung 19

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


小智 5

unlink 不是特定于 UNIX 的,我不知道为什么人们这么说。参见 io.h。虽然你可能需要做类似的事情

#define unlink _unlink
Run Code Online (Sandbox Code Playgroud)

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

  • unlink 是一个 Posix 函数。MS 在其编译器的 C 运行时标头中包含了许多 Posix 函数,但这会污染命名空间。为了更符合 C 标准,MS 后来用下划线前缀的版本替换了他们提供的一些 Posix 函数(并删除了其他函数)。前导下划线保留给实现。一般来说,C 运行时函数比 Posix 函数更可移植。一般来说,Posix 函数非常以 unix 为中心,尽管某些非 unix 操作系统可能提供一些 Posix 支持。 (10认同)
  • 不,我们不同意。unlink 是一个 Posix 函数。Posix 是标准化 Unix 衍生操作系统的一次尝试。_unlink 是一个在非 Unix 操作系统上工作的不同函数。 (7认同)

Que*_*rez 5

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

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

来自:man remove.

祝好运 ;)