open()无法打开文件

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

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。 任何想法?

如果你想创建一个新文件,你需要使用O_CREAT,所以:

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

顺便说一下,你可能想要使用strerror(errno)来显示你的错误