Используя MinGW, как я могу создать файл без атрибута только для чтения? - PullRequest
1 голос
/ 01 апреля 2011

Когда я пытаюсь перезаписать существующий файл, я получаю сообщение об ошибке «Отказано в доступе».Я заметил, что для файла, который создается, установлен атрибут «Только для чтения».Когда я вручную отключаю это, я могу перезаписать файл.Есть ли какой-нибудь флаг, который я могу передать open (), который будет автоматически сбрасывать это при создании файла?

Ниже приведен простой пример, который иллюстрирует проблему.Первый запуск работает, но второй выдает ошибку «Отказано в доступе».

Спасибо, Зак (новичок в MingW / Windows 7)

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>

int main(int argc, char ** argv) {
    int fid;
    double data = 12.0;

    if ( (fid = open("junk.data", O_WRONLY | O_CREAT | O_BINARY)) == -1 ) {
        printf("ERROR opening.\n\terror is:%s\n", strerror(errno));
        return 1;
    }

    write(fid, &data, sizeof(double));

    close(fid);

    return 0;
}

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Я пробовал 0644 и S_IRUSR |S_IWUSR (с включенным sys / stat.h) и работаетпросто отлично)

1 голос
/ 01 апреля 2011

open имеет трехпараметрический вариант:

int open(const char *pathname, int flags, mode_t mode);

Этот третий параметр позволяет указывать биты режима в системах Unix-типа, но его должно быть достаточно для установки минимальных разрешений для чтения и записи наокна.(Проверьте страницу руководства для деталей.)

...