Comment supprimez-vous généralement les fichiers sous Linux? Je pense utiliser l'appel de fonction unlink
, mais je me demande si vous avez une meilleure idée, car la norme C++ ne mentionne pas l'opération de suppression de fichier et dépend du système.
Oui, la norme C++ laisse ce système à l'OS. Par conséquent, si vous êtes sous Linux (ou sur tout système POSIX), unlink()
est ce que vous avez.
La norme C fournit remove()
, ce que vous pouvez essayer, mais gardez à l'esprit que son comportement n'est pas spécifié pour autre chose qu'un "fichier normal", il ne vous empêche donc pas d'entrer dans la plateforme. -des détails spécifiques du système de fichiers (liens, etc.).
Si vous voulez quelque chose de plus haut niveau, plus robuste et plus portable, consultez Boost Filesystem .
La norme inclut une fonction appelée remove qui le fait. Bien que je préférerais boost.filesystem
pour cela (si j'utilise déjà boost de toute façon).
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
unlink()
est défini par les normes POSIX et existera donc sur tout système compatible POSIX, et sur bon nombre de systèmes non compatibles POSIX.
unlink est la bonne façon de le faire.
Notez que les noyaux récents offrent également unlinkat
. Cette fonction est plus rapide que unlink
si vous avez un descripteur de fichier sur le répertoire lui-même.