SORU
25 ŞUBAT 2010, PERŞEMBE


() Özyineli / T Unıx sistem çağrısı

Bu format(2) Bu ismi Unıx sistem çağrısı sayfasına okuduktan sonra, Ara bir yol Ara dizinler, yolun son dizin oluşturmak yok gibi görünüyor. El ile dizin benim dize ayrıştırma ve ayrı ayrı her bir dizin oluşturma başvurmadan yolundaki tüm dizinler oluşturmak için herhangi bir yol (veya başka bir fonksiyonu var mıdır ?

CEVAP
25 ŞUBAT 2010, PERŞEMBE


Sizin için bunu yapmak için bir sistem çağrısı, ne yazık ki yok. Çok iyi tanımlanmış bir hata durumlarda ne yapılması gerektiği için semantik için bir yolu yoktur, çünkü tahmin ediyorum. Önceden oluşturulmuş dizinler bırakın. Onları silmek? Eğer silme başarısız olursa ne olacak? .

Çok kolay kendi rulo, ancak, hızlı bir google 'recursive mkdir' çözümler bir dizi ortaya çıktı. İşte en yakın olduğunu

http://nion.modprobe.de/blog/archives/357-Recursive-directory-creation.html

static void _mkdir(const char *dir) {
        char tmp[256];
        char *p = NULL;
        size_t len;

        snprintf(tmp, sizeof(tmp),"%s",dir);
        len = strlen(tmp);
        if(tmp[len - 1] == '/')
                tmp[len - 1] = 0;
        for(p = tmp   1; *p; p  )
                if(*p == '/') {
                        *p = 0;
                        mkdir(tmp, S_IRWXU);
                        *p = '/';
                }
        mkdir(tmp, S_IRWXU);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • MotoManTV

    MotoManTV

    10 Aralık 2009
  • RyanXLT

    RyanXLT

    22 Ocak 2011