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

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Dumb Stupid Videos

    Dumb Stupid

    26 Kasım 2013
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011