web-dev-qa-db-fra.com

dissocier vs supprimer en c ++

Quelle est la différence entre les fonctions de suppression et de dissociation en C++?

41
SyBer

Outre le fait que unlink est spécifique à Unix (comme l'a souligné Chris), nous lisons dans le manuel POSIX:

Si path ne nomme pas de répertoire, remove (path) équivaut à unlink (path). Si path nomme un répertoire, remove (path) est équivalent à rmdir (path).

En ce qui concerne le unlink passé par répertoire, nous lisons:

L'argument path ne doit pas nommer de répertoire, sauf si le processus dispose des privilèges appropriés et que l'implémentation prend en charge l'utilisation de unlink () sur les répertoires. (...) Les applications doivent utiliser rmdir () pour supprimer un répertoire.

57
Kornel Kisielewicz

remove est portable et unlink est spécifique à Unix. :-P

19
Chris Jester-Young

La fonction remove() supprime le fichier ou le répertoire spécifié par chemin.

Si path spécifie un répertoire, remove(path) est l'équivalent de rmdir(path). Sinon, c'est l'équivalent de unlink(path).

De: man remove.

Bonne chance ;)

5
Quentin Perez

unlink n'est pas spécifique à Unix, je ne sais pas pourquoi les gens disent ça. voir io.h. bien que vous deviez probablement faire quelque chose comme

#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
bviktor