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

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • tychoadragmire

    tychoadragmi

    20 Mart 2006