What is the difference between remove and unlink functions in C++?
The remove()
function removes the file or directory specified by path.
If path specifies a directory, remove(path)
is the equivalent of
rmdir(path)
. Otherwise, it is the equivalent of unlink(path)
.
From: man remove
.
Good Luck ;)
remove()
is part of the C++ standard (N4860 29.11.14.30). unlink()
is not.
unlink is not unix-specific, i don't know why people're saying that. see io.h. although you'll probably have to do something like
#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
Apart from the fact that unlink is unix-specific (as pointed out by Chris), we read in the POSIX manual:
If path does not name a directory, remove(path) is equivalent to unlink(path). If path names a directory, remove(path) is equivalent to rmdir(path).
As for the directory-passed unlink
, we read:
The path argument must not name a directory unless the process has appropriate privileges and the implementation supports using unlink() on directories. (...) Applications should use rmdir() to remove a directory.
remove
is portable, and unlink
is Unix-specific. :-P