Ubuntun käyttö > Ohjelmointi, palvelimet ja muu edistyneempi käyttö
[Ratkaistu]Kuinka luodaan tmp-hakemisto C++:lla ?
(1/2) > >>
kamara:
Olen yrittänyt käyttää seuraavaa käskyä, mutta se ei luo temppi-kansiota. :'(


--- Koodia: ---#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";
    }
}

--- Koodi päättyy ---

Tämä palauttaa erroriin NULL:n, kun haluaisin luoda väliaikaishakemiston.
kamara:
Löytyi ratkaisu !

Kiitos avusta...


--- Koodia: ---#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";
    }
}

--- Koodi päättyy ---

Elikkäs tarvitaan tiedostonnimiin XXX:iä loppuun, jotka temppigeneraattori muuttaa yksilölliseksi hakemistoksi.
_Pete_:
Voi käyttää myös c++ kirjaston valmista toimintaa:

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

kamara:

--- Lainaus käyttäjältä: _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

--- Lainaus päättyy ---

Enkös minä juuri niin tehnyt ?
nm:

--- Lainaus käyttäjältä: kamara - 22.02.24 - klo:20.23 ---
--- Lainaus käyttäjältä: _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

--- Lainaus päättyy ---

Enkös minä juuri niin tehnyt ?

--- Lainaus päättyy ---

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ä.
Navigaatio
Viestien etusivu
Seuraava sivu

Siirry pois tekstitilasta