1. Llame a dirent.h para implementarlo.
Primero determine si la carpeta actual existe y luego llame a la interfaz para eliminarla. Sin embargo, la eliminación fallará debido a problemas de permisos.
#include <iostream>
#include <dirent.h>
bool directoryExists(const char* dirName) {
DIR* dir = opendir(dirName);
if (dir) {
closedir(dir);
return true;
} else {
return false;
}
}
int main() {
const char* directoryName = "/dev/shm/my_dir";
if (directoryExists(directoryName)) {
std::cout << "Directory exists" << std::endl;
} else {
std::cout << "Directory does not exist" << std::endl;
}
return 0;
}
2. Llamar a unistd.h
sin especificar las opciones de compilación no eliminará el permiso de raíz del archivo.
#include <iostream>
#include <unistd.h>
bool removeDirectory(const char* dirName) {
if (rmdir(dirName) == 0) {
return true;
} else {
return false;
}
}
int main() {
const char* directoryName = "/dev/shm/my_dir";
if (removeDirectory(directoryName)) {
std::cout << "Directory removed successfully" << std::endl;
} else {
std::cout << "Failed to remove directory" << std::endl;
}
return 0;
}
3. Llame a cstdlib.h para
verificar automáticamente si la carpeta especificada existe en el directorio actual. Si existe, elimínela. Si no existe, no se devolverá la falla. No es necesario especificar opciones de compilación y las carpetas con permisos de raíz se pueden eliminar. No es necesario modificar los permisos del programa. la mejor solucion
#include <iostream>
#include <cstdlib>
int main() {
std::string folderPath = "/dev/shm/my_directory"; // 指定要删除的文件夹路径
std::string command = "sudo rm -rf " + folderPath;
int result = std::system(command.c_str());
if (result == 0) {
std::cout << "Folder deleted successfully." << std::endl;
} else {
std::cerr << "Failed to delete the folder." << std::endl;
}
return 0;
}
4. Llame al sistema fs para eliminar.
Utilice el sistema de archivos fs para eliminar la carpeta en el directorio especificado. Por lo general, necesita agregar opciones de compilación a las opciones de compilación:
g++ rmdir.cpp -std=c++17 -lstdc++fs
Además, al eliminar la carpeta mediante este método, la eliminación fallará debido a problemas de permisos de root.
#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
void removeDirectory(const std::string& dirPath) {
fs::path directory(dirPath);
if (fs::exists(directory) && fs::is_directory(directory)) {
fs::remove_all(directory);
std::cout << "Removed directory: " << dirPath << std::endl;
} else {
std::cout << "Directory does not exist or is not a directory" << std::endl;
}
}
int main() {
std::string directoryPath = "/dev/shm/my_directory";
removeDirectory(directoryPath);
return 0;
}