Как вы, ребята, обычно удаляете файлы в ОС Linux? Я думаю об использовании вызова функции unlink
, но мне интересно, есть ли у вас идея лучше, поскольку в стандарте С++ нет упоминания об операции удаления файла и зависит от системы.
Удалить файл в С++ под UNIX
Ответ 1
Yep - стандарт С++ оставляет эту информацию до ОС, поэтому, если вы работаете в Linux (или любой системе POSIX), unlink()
это то, что у вас есть.
Стандарт C предоставляет remove()
, который вы можете попробовать, но имейте в виду, что его поведение не указано для чего-либо иного, кроме "обычного файла", поэтому он не защищает вас от доступа к данным файловой системы конкретной платформы (ссылки и т.д.).
Если вы хотите что-то более высокоуровневое, более надежное и портативное, посмотрите Boost File System.
Ответ 2
Стандарт включает функцию remove, которая делает это. Хотя я бы предпочел boost.filesystem
для этого (если я уже использую boost в любом случае).
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
Ответ 3
unlink()
определяется стандартами POSIX и, следовательно, будет существовать в любой совместимой с POSIX системе и на довольно многих которые также не совместимы с POSIX.
Ответ 4
unlink - правильный способ сделать это.
Ответ 5
Обратите внимание, что последние ядра также предлагают unlinkat
. Эта функция работает быстрее, чем unlink
, если у вас есть дескриптор файла в самой директории.