Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: kamara - 21.02.24 - klo:16.41

Otsikko: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: kamara - 21.02.24 - klo:16.41
Olen yrittänyt käyttää seuraavaa käskyä, mutta se ei luo temppi-kansiota. :'(

Koodia: [Valitse]
#include <stdlib.h>
#include <iostream>
#include <cstring>
int main(int argc,char **argv) {
    char *tmppi=(char *)malloc(500);
    char *tmpPath;
    strcpy(tmppi,"/tmp");
    tmpPath=mkdtemp(tmppi);
    if(tmpPath==NULL) {
        std::cerr << "tmpPath=NULL\n";
    } else {
        std::cerr << "tmpPath=" << tmpPath << "\n\n";
    }
}

Tämä palauttaa erroriin NULL:n, kun haluaisin luoda väliaikaishakemiston.
Otsikko: Vs: Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: kamara - 21.02.24 - klo:16.45
Löytyi ratkaisu !

Kiitos avusta...

Koodia: [Valitse]
#include <stdlib.h>
#include <iostream>
#include <cstring>
int main(int argc,char **argv) {
    char *tmppi=(char *)malloc(500);
    char *tmpPath;
    strcpy(tmppi,"OmatemppiXXXXXX");
    std::cerr << tmppi << "\n";
    tmpPath=mkdtemp(tmppi);
    if(tmpPath==NULL) {
        std::cerr << "tmpPath=NULL\n";
    } else {
        std::cerr << "tmpPath=" << tmpPath << "\n\n";
    }
}

Elikkäs tarvitaan tiedostonnimiin XXX:iä loppuun, jotka temppigeneraattori muuttaa yksilölliseksi hakemistoksi.
Otsikko: Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: _Pete_ - 22.02.24 - klo:14.23
Voi käyttää myös c++ kirjaston valmista toimintaa:

https://en.cppreference.com/w/cpp/io/c/tmpfile

Otsikko: Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: kamara - 22.02.24 - klo:20.23
Voi käyttää myös c++ kirjaston valmista toimintaa:

https://en.cppreference.com/w/cpp/io/c/tmpfile

Enkös minä juuri niin tehnyt ?
Otsikko: Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: nm - 23.02.24 - klo:00.33
Voi käyttää myös c++ kirjaston valmista toimintaa:

https://en.cppreference.com/w/cpp/io/c/tmpfile

Enkös minä juuri niin tehnyt ?

mkdtemp on POSIX-standardin mukainen C-funktio. Se vaatii siis C-tyyppisten merkkijonojen pyörittelyä. C++:n standardikirjastoissa ei kuitenkaan ole suoraan vastaavaa mekanismia, jolla voisi luoda uniikisti ja rististiriidattomasti nimetyn väliaikaishakemiston. Sen sijaan väliaikaistiedoston voi luoda Peten ehdottamalla std::tmpfile-funktiolla.

Jos tarvitset nimenomaan hakemiston, käyttämäsi C-funktio mkdtemp on siihen suoraviivaisin ratkaisu ainakin Linux/Unix-ympäristössä.
Otsikko: Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
Kirjoitti: kamara - 23.02.24 - klo:07.04
Jos tarvitset nimenomaan hakemiston, käyttämäsi C-funktio mkdtemp on siihen suoraviivaisin ratkaisu ainakin Linux/Unix-ympäristössä.

Jep, tarvitsen nimen omaan väliaikais-hakemiston. Toki läjällä tiedostoja voisi saman ongelman ratkaista, mutta se ei olisi niin siisti kuin hakemiston käyttäminen, eikä se olisi myöskään niin helppo ohjelmoida.