Попробуйте функцию mkdtemp .
char *tmpdir;
strcpy (template, "/tmp/myprog.XXXXXX");
tmpdir = mkdtemp (template);
if (!tmpdir) {
// Error out here
}
printf ("Temporary directory created : %s", tmpdir);
Поскольку я пока не могу изменить/улучшить чужие ответы, я пишу один сам.
Я бы использовал stat
и mkdir
. For example:
#include <errno.h> // for errno
#include <stdio.h> // for printf
#include <stdlib.h> // for EXIT_*
#include <string.h> // for strerror
#include <sys/stat.h> // for stat and mkdir
int main() {
const char *mydir = "/tmp/mydir";
struct stat st;
if (stat(mydir, &st) == 0) {
printf("%s already exists\n", mydir);
return EXIT_SUCCESS;
}
if (mkdir(mydir, S_IRWXU|S_IRWXG) != 0) {
printf("Error creating directory: %s\n", strerror(errno));
return EXIT_FAILURE;
}
printf("%s successfully created\n", mydir);
return EXIT_SUCCESS;
}