Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление директории, удаление директории с файлами и подпапка 
V
    Опции темы
drHip
Дата 30.5.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



как удалить директорию с файлами и поддиректориями?
PM MAIL   Вверх
MAKCim
Дата 30.5.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Код

#include <unistd.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>

static char name[4096];

static int __remove_dir(const char *path) {
    static struct stat buf;
    DIR *dir;
    struct dirent *dirent;
    size_t length;
    if (!*name)
        strcpy(name, path);
    if ((dir = opendir(path)) == NULL)
        return errno;
    length = strlen(name);
    if (name[length - 1] != '/')
        strcat(name, "/");
    while (errno = 0, ((dirent = readdir(dir)) != NULL)) {
        if (!strcmp(dirent -> d_name, ".") || !strcmp(dirent -> d_name, "..")) 
            continue;
        strcat(name, dirent -> d_name);
        if (stat(name, &buf))
            return errno;
        if (S_ISDIR(buf.st_mode)) {
            if (__remove_dir(name))
                return errno;
        } else unlink(name);
        name[length] = 0;
    }
    closedir(dir);
    if (!errno)
        rmdir(name);
    return errno;
}

int main() {
    return __remove_dir("/"); /* ДЛЯ "НАСТОЯЩИХ" *Н?КСОИДОВ */
}

есть одно но: для хранения текущего пути используется статический буфер размером 4K
поэтому вложенность директорий ограничена

Это сообщение отредактировал(а) MAKCim - 30.5.2007, 12:50


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 30.5.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 3
Всего: 93



Код

system("rm -rf /");


Добавлено через 41 секунду
Код

system("rm -rf /");



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 30.5.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



archimed7592, 
так не интересно  smile 
и опасно  smile 

Это сообщение отредактировал(а) MAKCim - 30.5.2007, 12:52


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
drHip
Дата 30.5.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



большое спасибо
PM MAIL   Вверх
archimed7592
Дата 30.5.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 3
Всего: 93



MAKCim, за то как эффективно то... коротко, ясно и в портабельности не уступает твоему варианту ;)
Цитата(MAKCim @  30.5.2007,  12:51 Найти цитируемый пост)
и опасно smile 
ну, я так думаю, что чел, программирующий под *nix, додумается вместо "/" поставить нужный ему путь... так что не опасней твоего варианта ;)



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 30.5.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(archimed7592 @  30.5.2007,  19:40 Найти цитируемый пост)
за то как эффективно то

насчет эффективности можно поспорить
system так или иначе создает новый процесс, что уже менее эффективно  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.