open()无法打开文件

时间:2010-01-23 10:17:44

标签: linux file

出于某种原因,我无法打开()来打开文件。这是我的代码。

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 个答案:

答案 0 :(得分:2)

如果您正在尝试创建新文件,则需要使用O_CREAT,因此:

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

顺便说一下,您可能想使用strerror(错误号)来显示错误