open () не может открыть файлы - PullRequest
2 голосов
/ 23 января 2010

Почему-то я не могу открыть (), чтобы открыть файл. Вот мой код.

static int context_ctor(X86Context *ctx)
{
    char file[512];
    memset(ctx, 0, sizeof(X86Context));

    sprintf(file, "%s.%d", "test", getpid());

    ctx->fp = open(file, O_RDWR);

    if(ctx->fp < 0) {
        printf("errno %d %s\n", errno, file);
        return VISUAL_ERROR_GENERAL;
    }

    ctx->buf = mmap(0, MAXFILESIZE, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, ctx->fp, 0);

    printf("context_ctor: %p\n", ctx->buf);

    close(ctx->fp);
    exit(0);
}

А вот и вывод:

errno 2 test.12356

Поиск кода ошибки показывает:

[EACCES]
    Permission denied.

Я знаю, что у меня есть разрешение на чтение / запись / выполнение файлов в этом каталоге. Я даже попробовал /tmp/test.pid. Есть идеи?

1 Ответ

2 голосов
/ 23 января 2010

Если вы пытаетесь создать новый файл, вам нужно использовать O_CREAT, поэтому:

ctx->fp = open(file, O_CREATE | O_RDWR);

Кстати, вы можете использовать strerror (errno), чтобы показать свои ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...