Я создал папку и после того, как я открыл файл внутри этой папки, напишите на ней. Случается, что после этого я пытаюсь открыть файл, но у меня нет прав, поэтому мне нужно его вручную изменить.Как получить разрешение на чтение в недавно созданной папке и файле в C?
/* str1 has tha name of the folder */
/* str the bytes I want to write in the file inside the folder*/
...
mkdir(str1,0777);
if (filefd < 0) {
strncpy(auxstr, str, MAX_MSG + 1);
strcat(str1,"\\");
strcat(str1, auxstr);
filefd = open (str1, O_RDWR | O_CREAT | O_TRUNC);
nbytes -= (strlen(str) + 1);
memcpy(auxstr, &str[strlen(str)+1], nbytes);
memcpy(str, auxstr, nbytes);
}
/*write to the file */
if ((nwritten = write(filefd, str, nbytes)) != nbytes) {
printf ("can't write on file\n");
break;
}
Что я должен изменить, чтобы иметь разрешения на открытие созданного файла?
Спасибо большое,
: s
с = 0_CREATE я до сих пор проблема не имеющих разрешения на чтение файла. я должен установить их вручную
И у меня уже есть 0_CREAT на открытом
открытой (str1, O_RDWR | O_CREAT | O_TRUNC);
Вы должны проверить статус возврата из системного вызова mkdir(); он может потерпеть неудачу. Непонятно, почему filefd будет отрицательным, но это часть проблемы с фрагментами кода и неполными (не) рабочими примерами. – 2008-11-25 05:36:08
Вы также должны проверить статус возврата из системного вызова open(); он может потерпеть неудачу. Я также обнаружил операции memcpy() после непонятного вызова open(). – 2008-11-25 05:58:33