出于某种原因,我无法打开()打开文件。 这是我的代码。
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)来显示你的错误