2010-01-23 182 views
2

由於某些原因,我無法打開()打開文件。這是我的代碼。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。任何想法?

回答

2

如果你想創建你需要使用O_CREAT一個新的文件,所以:

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

順便說一句,你可能需要使用字符串錯誤(錯誤),以顯示你的錯誤

+0

那得到它了。謝謝。 – Scott 2010-01-23 10:25:50