【发布时间】:2013-11-19 23:35:15
【问题描述】:
为了尝试在每个程序执行时创建一个新目录,我编写了以下内容:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string>
#include <sstream>
int main(int argc, char *argv[]) {
std::stringstream ss;
std::string base = "directory";
std::string dir;
int dir_count = 0;
bool isdir = true;
while (isdir) {
ss.str("");
ss << base << dir_count << "/";
dir_count++;
dir = ss.str();
struct stat mystat;
stat(dir.c_str(), &mystat);
if(! S_ISDIR(mystat.st_mode)) {
isdir = false;
mkdir(dir.c_str(), 0700);
}
}
}
如果第一个目录名称是新的,则此方法有效;否则,如果S_ISDIR() 在第一次迭代时计算为true,它将在所有后续迭代中继续计算为true,从而导致无限循环。尽管更改了已检查的目录名称,但仍然如此。我是否错误地使用了stat()?
【问题讨论】: