Kirjoittaja Aihe: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?  (Luettu 789 kertaa)

kamara

  • Käyttäjä
  • Viestejä: 2951
    • Profiili
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.
« Viimeksi muokattu: 21.02.24 - klo:16.47 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 2951
    • Profiili
Vs: Kuinka luodaan tmp-hakemisto C++:lla ?
« Vastaus #1 : 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.
« Viimeksi muokattu: 21.02.24 - klo:16.48 kirjoittanut kamara »

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
« Vastaus #2 : 22.02.24 - klo:14.23 »
Voi käyttää myös c++ kirjaston valmista toimintaa:

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


kamara

  • Käyttäjä
  • Viestejä: 2951
    • Profiili
Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
« Vastaus #3 : 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 ?

nm

  • Käyttäjä
  • Viestejä: 16245
    • Profiili
Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
« Vastaus #4 : 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ä.
« Viimeksi muokattu: 23.02.24 - klo:00.35 kirjoittanut nm »

kamara

  • Käyttäjä
  • Viestejä: 2951
    • Profiili
Vs: [Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
« Vastaus #5 : 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.