フォルダーが存在しない場合は作成する必要があるため、次を使用します。
bool mkdir_if_not_exist(const char *dir)
{
bool ret = false;
if (dir) {
// first check if folder exists
struct stat folder_info;
if (stat(dir, &folder_info) != 0) {
if (errno == ENOENT) { // create folder
if (mkdir(dir, S_IRWXU | S_IXGRP | S_IRGRP | S_IROTH | S_IXOTH) ?!= 0) // 755
perror("mkdir");
else
ret = true;
} else
perror("stat");
} else
ret = true; ?// dir exists
}
return ret;
}
フォルダーは、プログラムの最初の実行中にのみ作成されます。その後は単なるチェックです。stat 呼び出しをスキップして mkdir を呼び出し、EEXIST に対して errno をチェックすることをお勧めします。それは本当の利益をもたらしますか?