|
| directories i C++ Fra : Rene Thomsen |
Dato : 10-07-01 11:01 |
|
Hejsa,
jeg har lige et par spg. vedr. haandtering af directories i C++ (Std. C
eksempler er ok!)
Jeg bruger GCC under Linux (Redhat)
1) Hvordan checker man om et givent directory eksisterer?
Det eneste jeg har kunnet finde er 'opendir' (findes i dirent.h', hvor
man blot kan teste paa return vaerdien.
Er det den smarteste/eneste maade at goere det paa?
2) Hvordan skaber man directories (i dette tilfaelde under Unix/Linux)?
Mvh.
Rene
| |
Rene Thomsen (10-07-2001)
| Kommentar Fra : Rene Thomsen |
Dato : 10-07-01 13:51 |
|
Rene Thomsen wrote:
>
> Hejsa,
>
> jeg har lige et par spg. vedr. haandtering af directories i C++ (Std. C
> eksempler er ok!)
>
> Jeg bruger GCC under Linux (Redhat)
>
> 2) Hvordan skaber man directories (i dette tilfaelde under Unix/Linux)?
hmm, jeg fandt loesningen i sys\stat.h (her ligger mkdir funktionen)
Mvh.
Rene
| |
Robert Bauck Hamar (10-07-2001)
| Kommentar Fra : Robert Bauck Hamar |
Dato : 10-07-01 23:24 |
|
Rene Thomsen <thomsen@daimi.au.dk> skreiv:
| Hejsa,
|
| jeg har lige et par spg. vedr. haandtering af directories i C++ (Std. C
| eksempler er ok!)
|
| Jeg bruger GCC under Linux (Redhat)
|
| 1) Hvordan checker man om et givent directory eksisterer?
| Det eneste jeg har kunnet finde er 'opendir' (findes i dirent.h', hvor
| man blot kan teste paa return vaerdien.
| Er det den smarteste/eneste maade at goere det paa?
Jeg skulle tro access(2),
#include <unistd.h>
int access(const char *pathname, int mode);
er bedre, fordi den (antakeligvis) bruker mindre ressurser. Den
returnerer 0 for ok, eller -1 med errno satt. mode er en mask av:
F_OK: fil eksisterer
R_OK: r satt
W_OK: w satt
X_OK: x satt
eks:
#include <iostream>
#include <string>
#include <unistd.h>
int main()
{
std::string pathname;
for (;;)
{
std::cout << "Type a directory name: ";
std::getline(std::cin, pathname);
//null-string avlutter showet
if (pathname.length() == 0)
break;
//være sikker på at det _er_ et dir.
pathname += '/';
//sjekker om fil existerer
if (!access(pathname.c_str(), F_OK))
std::cout << "Dir exists!" << std::endl;
else
std::cout << "Dir does not exist!" << std::endl;
}
}
--
Robert Bauck Hamar
| |
|
|