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

  • engineerguy

    engineerguy

    10 Ocak 2010
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • SaMmM123

    SaMmM123

    3 Mayıs 2006