Трабл с мкдир и офстрим - PullRequest
       21

Трабл с мкдир и офстрим

0 голосов
/ 28 февраля 2012

Я впервые работаю с каталогами.

У меня есть фрагмент кода:

void initialize()
{
  mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
  mkdir("/cygdrive/c/enc/misc", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
  ofstream user ("/cygdrive/c/enc/misc/usercount.txt");
  if (user.is_open())
    user << "0 0" << endl;
  user.close();
  ofstream prompt ("/cygdrive/c/enc/misc/prompt.txt");
  if (prompt.is_open())
    prompt << "CLI>";
  prompt.close();  
  ofstream randomuser ("/cydrive/c/enc/user/rando.txt");
  if (randomuser.is_open())
    randomuser << "garbageinfo";
  randomuser.close();
}

Пользователь и приглашение ofstreams ведут себя точно так, как я намереваюсь, но всякий раз, когда я пытаюсь открыть каталог enc / user, он просто не открывается. Это несоответствие сводит меня с ума, есть идеи, что происходит?

1 Ответ

1 голос
/ 28 февраля 2012

Я подозреваю, что mkdir() не работает из-за опечатки в имени каталога.Я думаю:

mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);

должно быть:

mkdir("/cygdrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
          ^

Если нет, проверьте возвращаемое значение mkdir(), чтобы обеспечить успех:

if (0 != mkdir("/cydrive/c/enc/user", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) &&
    EEXIST != errno)
{
    std::cerr << "Failed to create directory: "<< strerror(errno) << "\n";
}
...